Как передать значение переменной из view в controller?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
pashakhorikov
Сообщения: 11
Зарегистрирован: 2014.12.01, 02:15

Как передать значение переменной из view в controller?

Сообщение pashakhorikov »

В общем, есть форма поиска. У нее имеется переключатель для выбора модели (в моем случае автор или статья.)

Выглядит все это вот так.

[img]
22.png
22.png (7.43 КБ) 7268 просмотров
[/img].

Научите, пожалуйста, как мне передать выбранное значение в контроллер, чтобы выборку сделать в зависимости от возвращаемого знаяения в кнопках. К примеру, если пользователь вводит поиск по авторам, то юзать модель author, если по публикациям, то искать в articles? Как переключиться между моделями (Articles/Authors) в зависимости от выбранного пункта?

Спасибо.
Аватара пользователя
PaSiS
Сообщения: 88
Зарегистрирован: 2011.11.15, 18:07
Контактная информация:

Re: Как передать значение переменной из view в controller?

Сообщение PaSiS »

Так же, как любой параметр формы
chesar
Сообщения: 514
Зарегистрирован: 2013.04.10, 17:49

Re: Как передать значение переменной из view в controller?

Сообщение 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);
}
 
pashakhorikov
Сообщения: 11
Зарегистрирован: 2014.12.01, 02:15

Re: Как передать значение переменной из view в controller?

Сообщение pashakhorikov »

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);
}
 
Благодарю. То, что надо, а скажите. пожалуйста, как мне получить значение элемента (пришлось сверстать списками набор опций для переключателя, иначе, то есть через form->field('')->activeDropDown() не удается получить нужного результата, поэтому верстал форму руками)
и нужно вырвать параметр из списка, а именно значение value тэга <li>.

<ul>
<li value="authors">Поиск в авторах</li>
<li value="artilces">Поиск в статьях</li>
</ul>
dmg
Сообщения: 685
Зарегистрирован: 2012.10.15, 03:09

Re: Как передать значение переменной из view в controller?

Сообщение dmg »

сделайне это

Код: Выделить всё

<ul>
<li value="authors">Поиск в авторах</li>
<li value="artilces">Поиск в статьях</li>
</ul>
элементами формы или навешивайте на submit формы javascript получатель этих значений.
pashakhorikov
Сообщения: 11
Зарегистрирован: 2014.12.01, 02:15

Re: Как передать значение переменной из view в controller?

Сообщение pashakhorikov »

dmg писал(а):сделайне это

Код: Выделить всё

<ul>
<li value="authors">Поиск в авторах</li>
<li value="artilces">Поиск в статьях</li>
</ul>
элементами формы или навешивайте на submit формы javascript получатель этих значений.

У меня эта часть кода и так элемент формы.

Код: Выделить всё

<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>
Скажите, пожалуйста, как без js-getter'ов получить value элемента списка? Точнее говоря, как тут правильно заюзать

Код: Выделить всё

Yii::$app->request->getBodyParam
, для получения всех значений формы?
Ответить