我显然是Laravel的菜鸟,希望有人能帮助我。
通过路线访问“关于”屏幕
Route::get('/about', array('as' => 'about', function()
{
return View::make('about')->with('title','About Screen')->with('class','about');
}));
变量{title和$ class可以通过{{$ title}}和{{$ class}}在about.blade.php中访问。如果相反,我之间有一个控制器,
Route::get('hello/create', array('as' => 'create', 'uses' =>
'HelloController@create', function()
{
return View::make('hello/create')->with('title','Create')->with('class','hello.create');
}));
如何在HelloController.php代码中访问$ title和$ class(以便可以将值传播到即将到来的View)?
P.S。我确实知道/ hello / create / {变量名},几乎可以回答所有与此类似的问题,但是我不知道如何使用它来传输未键入Http请求的变量。
答案 0 :(得分:1)
$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');
}
}
更新:
据我了解,您还可以在路由的闭包内调用控制器的方法,并将参数传递给控制器,并在控制器的方法内使用这些值调用视图。
您的路线文件:
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);
}
}
答案 1 :(得分:1)
首先,您需要清除流程。您-目前-手动将变量设置为返回到视图,因此您的路线应如下所示:
Route::get('hello/create', 'HelloController@create');
然后,您的控制器处理逻辑:
public function create(Request $request)
{
return view('hello.create')->with('title','Create')->with('class','hello.create');
}
现在,如果您需要将参数从前端发送到控制器,则有两种选择:
对于第一个选项,您需要在路由本身中定义所需/可选参数:
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);
}
要使用查询参数,在发出请求时应包括此选项。如果您的路线如下所示:
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);
}
答案 2 :(得分:0)
您正在使用with()发送数据以进行查看。
使用在with()中设置的$ variablename在视图文件中回显示例:<?php echo $title; ?>