您好我想使用一条不使用控制器的路线。为了清楚我想要实现的目标,我将首先向您展示我的视图代码index.blade.php:
<div class="form-group" id="work-bar" >
{{Form::open(array('route'=>'user.store.work', 'method'=>'post'))}}
<div class="center-bar">
<div class="row">
<div class="col-md-12" id="column-make">
{{Form::text('order_name', '',array('class' => 'form-control', 'id'=>'work-name'))}}
<div id="BarDropDown" href="#" >
<select class="form-control" id="BarSelectDropDown" name="worktypes" >
<option selected value="order" >Offerte</option>
<option value="project">Project</option>
<option value="task">Taak</option>
</select>
</div>
{{Form::hidden('route', Request::path() )}}
{{Form::submit('Maken', array('class' => 'btn btn-default', 'id' => 'work-submit'))}}
</div>
</div>
</div>
{{Form::close()}}
</div>
好的,这只是一个带有下拉列表的表单。这是我的路线的代码,名为routes.php:
<?php
Route::group(array('prefix'=>'user', 'before'=>'auth'),function(){
Route::resource('usergroups', 'UsergroupsController');
Route::resource('orders', 'OrdersController');
Route::resource('users', 'UsersController');
Route::resource('tasks', 'TasksController');
Route::resource('projects', 'ProjectsController');
Route::post('works',array('as'=>'user.store.work'), function() {
$action = 'store';
if (Input::get('worktypes')=="project") {
return App::make('ProjectsController')->$action();
}
elseif(Input::get('worktypes')=="order") {
return App::make('OrdersController')->$action();
}
else{
return App::make('TasksController')->$action();
}
});
});
Route::group(array('prefix'=>'user'),function(){
Route::post('login',array('as'=>'user.login.post', 'uses'=>'UserAuthController@postLogin'));
Route::get('logout',array('as'=>'user.logout', 'uses'=>'UserAuthController@getLogout'));
});
Route::get('/',array('as'=>'home', 'uses'=>'IndexController@getIndex'));
Route::post('/',array('as'=>'home', 'uses'=>'IndexController@getIndex'));
因此,我依赖于从我的下拉列表中选择的内容,我将转到ProjectsController或OrdersController或TasksController。存储项目或订单或任务。但是以下路线并不起作用:
Route::post('works',array('as'=>'user.store.work'), function() {
$action = 'store';
if (Input::get('worktypes')=="project") {
return App::make('ProjectsController')->$action();
}
elseif(Input::get('worktypes')=="order") {
return App::make('OrdersController')->$action();
}
else{
return App::make('TasksController')->$action();
}
});
那是因为我收到以下错误:
call_user_func_array() expects parameter 1 to be a valid callback, no array or string given
我得到该错误的原因是,因为我必须再为该预期参数提供1个参数。所以我应该改变这个:
Route::post('works',array('as'=>'user.store.work'), function() {
有了这个:
Route::post('works',array('as'=>'user.store.work', 'uses'=>'OrdersController@store'), function() {
但我不想使用OrdersController中的store()方法,因为那时我只能将订单存储到数据库中。很高兴我在等你的回答。无论如何,谢谢你的回复。
答案 0 :(得分:1)
您应该将路线更改为:
Route::post('works',array('as'=>'user.store.work', function() {
// your function code here
}
));
回调应该在数组内部而不是第3个参数