Ошибка после заполнения форм

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

Re: Ошибка после заполнения форм

Сообщение dorofej85 »

Если нужно два вывода информации (две таблицы), то нужно в контроллере и прописывать две модели поиска, два поиска информации и передавать в представление два провайдера и два сёрча --- Но каждая модель поиска будет со своим именем? Как их именовать- например? И как именовать два провайдера и два серча?
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Ошибка после заполнения форм

Сообщение unknownby »

dorofej85 писал(а): 2021.07.07, 15:39 Если нужно два вывода информации (две таблицы), то нужно в контроллере и прописывать две модели поиска, два поиска информации и передавать в представление два провайдера и два сёрча --- Но каждая модель поиска будет со своим именем? Как их именовать- например? И как именовать два провайдера и два серча?
Если выводить информацию из двух разных моделей, то логично, что будет две модели поиска. А как назвать переменную, то это уже не вопрос форума. Как назовёте, так и будете её использовать. Главное, что переменная будет в себе содержать.

А если информация из одной модели, то зачем разделять эту информацию на две таблицы?
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Ошибка после заполнения форм

Сообщение unknownby »

dorofej85 писал(а): 2021.07.07, 15:39 Но каждая модель поиска будет со своим именем? Как их именовать- например? И как именовать два провайдера и два серча?
Как думаете, если я сделаю вот так. Это будет работать???

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

public function actionIndex()
    {
        $searchModelOne = new UsersOrdersSearch;
        $dataProviderOne = $searchModelOne->search(\Yii::$app->getRequest()->get());
        
        $searchModelTwo = new UsersOrdersSearch;
        $dataProviderTwo = $searchModelTwo->search(\Yii::$app->getRequest()->get());
        
        $searchModelThree = new UsersOrdersSearch;
        $dataProviderThree = $searchModelThree->search(\Yii::$app->getRequest()->get());

        return $this->render('index', [
            'searchModelOne' => $searchModelOne,
            'dataProviderOne' => $dataProviderOne,
            
            'searchModelTwo' => $searchModelTwo,
            'dataProviderTwo' => $dataProviderTwo,
            
            'searchModelThree' => $searchModelThree,
            'dataProvideThreer' => $dataProviderThree,
        ]);
    }
И соответственно выведу информацию в ТРИ представления

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

echo GridView::widget([
	'id' => 'one',
        'dataProvider'=> $dataProviderOne,
        'filterModel' => $searchModelOne,
        'columns' => $gridColumns,
    ]);
echo GridView::widget([
	'id' => 'two',
        'dataProvider'=> $dataProviderTwo,
        'filterModel' => $searchModelTwo,
        'columns' => $gridColumns,
    ]);
echo GridView::widget([
	'id' => 'three',
        'dataProvider'=> $dataProviderThree,
        'filterModel' => $searchModelThree,
        'columns' => $gridColumns,
    ]);
Разве есть какая-то проблема с названиями переменных? Есть нюансы, но не суть :)
Осталось дело за малым, поменять названия поисковых моделей

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

UsersOrdersSearch
И скорее всего смотреть как правильно принять переменные из get(), чтобы поиск работал правильно во всех таблицах.

P.S.
Не вижу смысла в выводе нескольких таблиц на одной странице в виде GridView, но это лично моё мнение.
dorofej85
Сообщения: 48
Зарегистрирован: 2013.08.23, 15:13

Re: Ошибка после заполнения форм

Сообщение dorofej85 »

Хорошо а если вы поменяете названия поисковых моделей и будете использовать все (2 или три) сеарч модели то получается в экшн индекс
надо будет прописывать так $searchModelOne = new UsersOrdersSearchold;
$dataProviderOne = $searchModelOne->search(\Yii::$app->getRequest()->get());

$searchModelTwo = new UsersOrdersSearchnew;
$dataProviderTwo = $searchModelTwo->search(\Yii::$app->getRequest()->get()); так ? А у вас последний GridView указывает что у вас идет фильтрация по одним и тем же признакам то есть система фильтрация во всех трех гридах выведет у вас одни и теже показатели? Тогда как в каждом гридевьюве вы реализуете разные параметры фильтрации?
dorofej85
Сообщения: 48
Зарегистрирован: 2013.08.23, 15:13

Re: Ошибка после заполнения форм

Сообщение dorofej85 »

Сообщение unknownby сообщите что нить по последнему вопросу?
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Ошибка после заполнения форм

Сообщение unknownby »

dorofej85 писал(а): 2021.07.08, 11:16 Хорошо а если вы поменяете названия поисковых моделей и будете использовать все (2 или три) сеарч модели то получается в экшн индекс
надо будет прописывать так $searchModelOne = new UsersOrdersSearchold;
$dataProviderOne = $searchModelOne->search(\Yii::$app->getRequest()->get());

$searchModelTwo = new UsersOrdersSearchnew;
$dataProviderTwo = $searchModelTwo->search(\Yii::$app->getRequest()->get()); так ? А у вас последний GridView указывает что у вас идет фильтрация по одним и тем же признакам то есть система фильтрация во всех трех гридах выведет у вас одни и теже показатели? Тогда как в каждом гридевьюве вы реализуете разные параметры фильтрации?
Абсолютно верно подмечено, что фильтра в одном и другом случае будут передаваться во все методы search(), из вашего \Yii::$app->getRequest()->get(), но я написал в прошлом сообщении вот что:
И скорее всего смотреть как правильно принять переменные из get(), чтобы поиск работал правильно во всех таблицах.

P.S.
Не вижу смысла в выводе нескольких таблиц на одной странице в виде GridView, но это лично моё мнение.
Объясните мне, зачем вам два грида и что вы хотите этими гридами выводить?
Но прежде чем объяснять, предлагаю вам подумать вот над чем.
1. Можно же сделать разные страницы для двух разных гридов. Один грид для пользователей, второй грид для постов. Информация отображается в нужном месте и глаза не разбегаются на две таблицы.
2. Если нужно вывести какой пользователь написал пост, то выводите пользователя через связь в грид с постами.
т.е. у вас посты и у каждого есть автор (пользователь), вот и выводите его имя в гриде.
Ответить