2015-01-03 2 views
0

Это мой первый опыт работы с Laravel, и до сих пор у меня возникают некоторые трудности с передачей данных в виде. Мое приложение - это веб-сайт с одной страницей, в котором перечислены все категории продуктов, а внизу есть сетка миниатюр для каждого товара или продукта. Посетители могут фильтровать продукты по их категории выбора.Как отправить данные с разных контроллеров/действий на один и тот же вид?

Route::get('home/{category}', array('as'=>'itemshome', 'uses'=>'[email protected]')); 

Так что в моих ItemsControllers я беру некоторые предметы из модели предметов и передаю их в представление.

class ItemsController extends \BaseController { 


public function index($category) 
{ 
    return View::make('home/index', ['items' => Item::where('publishtime', '<', 
date('Y-m-d H:i:s'))->where('category_id','=',$category)->paginate(24)]); 

} 

На данный момент я не уверен, если я должен отправить данные из модели категории в компактном виде с помощью ItemsController, или если это было бы лучше подход, чтобы определить новый CategoryController и передать значения оттуда.

ответ

0

Вы не можете просто использовать другой контроллер для отправки данных на один и тот же вид во время одного и того же запроса.

Либо добавить его в вид Позвонить:

return View::make('home/index', [ 
    'items' => Item::where('publishtime', '<', date('Y-m-d H:i:s'))->where('category_id','=',$category)->paginate(24), 
    'categories' => Category::all() 
]; 

Или, если данные категории на самом деле не имеет ничего общего с контроллером пунктов, но необходимо по мнению, можно зарегистрировать view composer

View::composer('home/index', function($view){ 
    $view->with('categories', Category::all()); 
}); 

Теперь каждый раз, когда отображается home/index, отображается categories.

Вы можете разместить композитор в любом месте, где хотите. Однако я рекомендую вам добавить новый файл app/composers.php для хранения всех ваших композиторов. Тогда вам нужно включить его где-нибудь. Например, в app/start/global.php внизу:

require app_path().'/composers.php'; 
+0

Первое предложение работает благодаря !, просто интересно, где я должен поставить код композитора. – user3130117

+0

Я обновил ответ с подробностями о том, куда поместить композитор представления – lukasgeiter

Смежные вопросы