Я новичок в Yii и пытаюсь понять это, создав веб-сайт для хобби, чтобы управлять своими покупками продуктов. Я пытаюсь создать страницу со списком моих рецептов и кнопкой +/- рядом с каждым рецептом, которая при нажатии обновляет список покупок на той же странице. Все ингредиенты рецепта и список покупок хранятся в базе данных SQL.
Пока у меня есть контроллер ShoppingListController, и в моей функции actionIndex () (которая показывает рецепты и список покупок) я создаю два провайдера данных и модель (для кнопок +/-, которые являются формой) и передаю Их на мой взгляд выглядит следующим образом:
// Create a shopping list item model
$shoppingListModel = new TblShoppingListItem;
// Get the saved shopping list data from the shopping list table
$shoppingDataProvider = new CActiveDataProvider('TblShoppingListItem', array(
'criteria'=>array(
'select'=>array('recipe_id', 'recipe_multiplier')),
'pagination'=>array('pageSize'=>500)
));
// Get the recipe ingredient data from the recipe models and order by recipe name
$recipeDataProvider = new CActiveDataProvider('TblRecipeIngredient', array(
'criteria'=>array(
'select'=>array('recipe_id', 'ingredient_id', 'ingredient_unit_id', 'ingredient_amount'),
'with'=>array('recipe','ingredient','ingredientUnit'),
'together'=>true,
'order'=>'recipe.name ASC'),
'pagination'=>array('pageSize'=>500)
));
// Render the 'shoppinglist/show' page
$this->render('show', array(
'recipeDataProvider'=>$recipeDataProvider,
'shoppingDataProvider'=>$shoppingDataProvider,
'shoppingListModel'=>$shoppingListModel
));
Я немного сбит с толку - мне кажется, мне нужна модель для перехода в +/- формы, мне нужен первый поставщик данных, чтобы я мог отобразить свой список покупок, и мне нужен второй поставщик данных, чтобы я мог отображать свои Информация о рецепте.
Однако мне интересно, нужны ли мне на самом деле shoppingListModel и shoppingDataProvider (т. Е. Имеет плохую практику)? Могу ли я получить необходимую информацию только от модели? Меня смущает разница между моделью и поставщиком данных.