В общем, есть форма поиска. У нее имеется переключатель для выбора модели (в моем случае автор или статья.)
Выглядит все это вот так.
[img] [/img].
Научите, пожалуйста, как мне передать выбранное значение в контроллер, чтобы выборку сделать в зависимости от возвращаемого знаяения в кнопках. К примеру, если пользователь вводит поиск по авторам, то юзать модель author, если по публикациям, то искать в articles? Как переключиться между моделями (Articles/Authors) в зависимости от выбранного пункта?
Спасибо.
Как передать значение переменной из view в controller?
-
- Сообщения: 11
- Зарегистрирован: 2014.12.01, 02:15
Re: Как передать значение переменной из view в controller?
Так же, как любой параметр формы
Re: Как передать значение переменной из view в controller?
1. Сделать два разных экшена, в каждом из которых используется необходимая модель.
2. Или передавать соответствующий параметр в запросе site.com/search?item=articles&name=John
2. Или передавать соответствующий параметр в запросе site.com/search?item=articles&name=John
Код: Выделить всё
public function actionSearch()
{
if(Yii::$app->request->getBodyParam('item') == 'articles') {
$model = new \app\models\Artcile();
} elseif ($_GET['item'] == 'authors' ) {
$model = new \app\models\Author();
} ...
$dataProvider = $model->search(Yii::$app->request->queryParams);
}
-
- Сообщения: 11
- Зарегистрирован: 2014.12.01, 02:15
Re: Как передать значение переменной из view в controller?
Благодарю. То, что надо, а скажите. пожалуйста, как мне получить значение элемента (пришлось сверстать списками набор опций для переключателя, иначе, то есть через form->field('')->activeDropDown() не удается получить нужного результата, поэтому верстал форму руками)chesar писал(а):1. Сделать два разных экшена, в каждом из которых используется необходимая модель.
2. Или передавать соответствующий параметр в запросе site.com/search?item=articles&name=JohnКод: Выделить всё
public function actionSearch() { if(Yii::$app->request->getBodyParam('item') == 'articles') { $model = new \app\models\Artcile(); } elseif ($_GET['item'] == 'authors' ) { $model = new \app\models\Author(); } ... $dataProvider = $model->search(Yii::$app->request->queryParams); }
и нужно вырвать параметр из списка, а именно значение value тэга <li>.
<ul>
<li value="authors">Поиск в авторах</li>
<li value="artilces">Поиск в статьях</li>
</ul>
Re: Как передать значение переменной из view в controller?
сделайне это
элементами формы или навешивайте на submit формы javascript получатель этих значений.
Код: Выделить всё
<ul>
<li value="authors">Поиск в авторах</li>
<li value="artilces">Поиск в статьях</li>
</ul>
-
- Сообщения: 11
- Зарегистрирован: 2014.12.01, 02:15
Re: Как передать значение переменной из view в controller?
dmg писал(а):сделайне этоэлементами формы или навешивайте на submit формы javascript получатель этих значений.Код: Выделить всё
<ul> <li value="authors">Поиск в авторах</li> <li value="artilces">Поиск в статьях</li> </ul>
У меня эта часть кода и так элемент формы.
Код: Выделить всё
<div class="row">
<div class="col-lg-12">
<?php $search = ActiveForm::begin([
'action' => ['default/search'],
'options' => [
'id' => 'search-form',
'method' => 'get',
]
]);
?>
<div class="input-group">
<div class="input-group-btn search-panel">
<button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown">
<span id="search_concept">Поиск </span><span class="caret"></span>
</button>
<ul id="searchParams" class="dropdown-menu" role="menu">
<li value="1"><a href="" title="Например, Сазыкин Андрей Михайлович">Поиск автора </a></li>
<li value="2"><a href="" title="Укажите слово или комбинацию слов, содержащихся в заголовке статьи">Поиск публикации </a></li>
</ul>
</div>
<input type="hidden" name="search_param" value="all" id="search_param">
<input type="text" class="form-control" name="searchBox" placeholder="" id="searchBox">
<span class="input-group-btn">
<?php echo Html::submitButton("<span class='glyphicon glyphicon-search'></span>", [
'class' => 'btn btn-primary',
]);
?>
</span>
</div>
</div>
<?php ActiveForm::end(); ?>
</div>
Код: Выделить всё
Yii::$app->request->getBodyParam