Laravel: Как Контроллер получает доступ к параметрам из Route? - PullRequest
0 голосов
/ 03 ноября 2018

Я, очевидно, новичок в Laravel и надеюсь, что кто-то может мне помочь.

Доступ к экрану about по маршруту

 Route::get('/about', array('as' => 'about', function()
 {
    return View::make('about')->with('title','About Screen')->with('class','about');
 }));

Переменные $ title и $ class доступны в about.blade.php с помощью {{$ title}} и {{$ class}}. Если вместо этого у меня есть Контроллер между

 Route::get('hello/create', array('as' => 'create', 'uses' => 
 'HelloController@create', function()
 {
    return View::make('hello/create')->with('title','Create')->with('class','hello.create');
 }));

Как получить доступ к $ title и $ class в коде HelloController.php (чтобы я мог распространять значения в следующем представлении)?

P.S. Я знаю о / hello / create / {имя переменной}, которая является ответом почти на все подобные вопросы, но не знаю, как использовать ее для передачи переменных, НЕ включенных в запрос Http.

Ответы [ 3 ]

0 голосов
/ 03 ноября 2018

$title и $class - это значения, которые вы вручную задаете блейду. Это не те значения, которые вы получаете в параметрах GET вашего маршрута. Таким образом, вы бы сделали это так же, как в закрытии.

Ваш маршрут:

Route::get('hello/create', array('as' => 'create', 'uses' => 'HelloController@create'));

Метод контроллера:

class HelloController{
 public function create(){
  return View::make('hello/create')->with('title','Create')->with('class','hello.create');
 }
}

UPDATE:

Из того, что я понял, вы также можете вызвать метод контроллера внутри замыкания маршрута и передать параметры контроллеру и вызвать представление с этими значениями внутри метода контроллера.

Ваш файл маршрута:

use App\Http\Controllers\HelloController;

Route::get('hello/create',function(){
    $hello_obj = new HelloController();
    return $hello_obj->create('create','hello.create');
});

Метод контроллера:

class HelloController{
 public function create($title,$class){
  return View::make('hello/create')->with('title',$title)->with('class',$class);
 }
}
0 голосов
/ 03 ноября 2018

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

Route::get('hello/create', 'HelloController@create');

Затем ваш контроллер обрабатывает логику:

public function create(Request $request)
{
    return view('hello.create')->with('title','Create')->with('class','hello.create');
}

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

  1. Определить параметры маршрута .
  2. Использовать параметры запроса.

Вариант 1

Для первого варианта вам необходимо определить обязательные / дополнительные параметры в маршруте itselft:

Route::get('hello/create/{a_variable}', 'HelloController@create');

Затем вы получаете доступ к этому параметру любым из следующих способов:

public function create(Request $request)
{
    return view('hello.create')->with('a_variable', $request->a_variable);
}

или ввод переменной в методе:

public function create(Request $request, $a_variable)
{
    return view('hello.create')->with('a_variable', $a_variable);
}

Вариант 2

Для использования параметров запроса вы должны включить эту опцию при выполнении запроса. Если ваш маршрут выглядит так:

Route::get('hello/create', 'HelloController@create');

Вы можете указать параметры запроса следующим образом:

GET www.my-domain.com/hello/create?first_parameter=value_1&second_parameter=value_2

Таким образом, в вашем контроллере вы получаете доступ к следующим значениям:

public function create(Request $request)
{
    $value_1 = $request->get('first_parameter');
    $value_2 = $request->get('second_parameter');

    return view('hello.create')
               ->with('value_1', $value_1)
               ->with('value_2', $value_2);
}
0 голосов
/ 03 ноября 2018

Вы уже отправляете данные для просмотра, используя с (). Выведите его в свой файл просмотра, используя $ variablename, установленное с помощью () Пример: <?php echo $title; ?>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...