2015-03-19 6 views
0

Я пытаюсь узнать Laravel, и у меня есть некоторые вопросы.Laravel routing и views

Скажем, у меня есть маршрут на дому:

Route::('/', '[email protected]'); 

В Home View У меня есть ссылка, которая принимает меня /предметы/бананы и ссылку, которая принимает меня /предметы/яблоки , Я должен сделать следующий маршрут следующим образом:

Route::('items/{item_name}', '[email protected]'); 

На дому Я заполняю ссылки из базы данных. Как:

<a href="{{ $fruit->slug }}">{{ $fruit->name }}</a> 

Мой вопрос, когда я иду от INDEX к/предметов/банан, например, как я прохожу $ фруктового объект из дома Посмотреть на Fruit View?

ответ

1

У вас нет. Вы извлечь его из хранилища данных

class FruitController 
    function indexAction($slug) 
    $fruit = Fruit::find... 
+0

Да, но как пропустить слизню от контроллера дома до контроллера фруктов? –

+0
0

Вам не нужно передать что-нибудь из дома вида на страницу фрукты, если вы можете иметь доступ к данным фруктов из базы данных. Как я вижу в вашем коде, ваши ссылки имеют доступ к переменной $ fruit. Возможно, вы получили этот объект из базы данных. Теперь вид дома имеет доступ к этому переменному, если переменному передаются ему в определении маршрута в «/» следующим образом:

Route::get('/', function() { 
     $fruit = Fruit::find(1) 
     return View::make('index')->with('fruit', $fruit); 
} 

Таким же образом, вы можете передать переменные фрукты в каждую фруктовой странице, указав идентификатор конкретного фрукта:

Route::get('fruit/{id}', function($id) { 
     $fruit = Fruit::find($id); 
     return View::make('index')->with('fruit', $fruit); 
})->where('id', '[0-9]+'); 

Если вы хотите дать ссылку на фруктовой страницу для конкретного плода, то в индексном можно составить по ссылке с помощью функции помощника URL «URL :: к "следующим образом

<a href="{{ URL::to('/fruit/'.$fruit->id) }}">{{ $fruit->name }}</a> 

Идентификатор скажет контроллеру фруктов или маршруту, который фрукты извлекают из базы данных.

Я надеюсь, что это помогает

0

Вы неправильно Http здесь (Или, может быть, я понял вопрос неправильно в первом). Когда вы делаете первый запрос на свой сайт (маршрут «/»), веб-сервер обрабатывает запрос и обслуживает веб-сайт, html, и ваш браузер интерпретирует его и генерирует то, что вы видите, вот и все.

Когда вы нажимаете ссылку, выполняется другой запрос, и сервер обрабатывается снова (есть другие способы сделать это с JS по-другому, но давайте оставим его простыми).

Таким образом, вы не можете передавать ничего от одного контроллера к другому, когда говорите об этом таким образом. Вы хотите получить {item_name} в Контроллере, потому что ссылка передает эту информацию.

Для достижения этой цели Laravel позволяет легко и просто определить свой метод FruitController следующим образом:

public function index($item_name){ 
    // in $item_name you will have apple/banana 
    // so do something with it, like 
    $fruit = \App\Fruit::where('type', $item_name)->get(); 
} 

Конечно логика внутри метода зависит от ваших настроек и что вам нужно достичь. Наслаждаться.