一个月前我开始使用Laravel。试图在其上创建一个包含一个表单的页面,并且我一直没有找到" Controller方法。"错误。页面上只有一个表单,该方法被称为正常,并进行我想要的查询。它确实重定向到具有该表单的同一页面/ dashboard / edit / module。
如果我能看到没有找到哪种方法或者我的代码中的位置,那将是非常棒的。我有什么想法可以做到这一点?有人在global.php中提到App :: error或搞乱Log :: error但我无法获得更多信息。
编辑:
我发现只有将视频上传到表单时才能找到表单操作。除此之外,它给了我同样的错误。这是此表单的控制器方法。带有此表单的页面是/ dashboard / edit / module,我希望在此运行后重新加载该页面。
public function postSection(){
$path = public_path() . "/videos/";
$filename = uniqid() . '.mp4';
$file_path = $path . $filename;
$moduleID = Input::get('moduleID');
if(!Input::hasFile('video')){
return Redirect::back()->with('error', 'Must enter a valid video file.');
}else{
try {
Input::file('video')->move($path, $filename);
$section = New Section;
$section->module_id = $moduleID;
$section->video = $file_path;
$section->save();
//I was trying to use this instead of View::make to stop form resubmission
//return Redirect::to('/dashboard/edit/module')->with('moduleID', $moduleID);
return View::make('forms.editMod')->with('moduleID', $moduleID);
}catch ( Exception $e){
return Redirect::back()->with('error', 'Unable to save the video file.');
}
}
}
编辑:和我的routes.php
//Route for the home page
Route::get('/', function(){ return View::make('home'); });
//Controllers
Route::controller('dashboard/edit', "ContentController");
Route::controller('user', "UserController");
Route::group(array('before'=> 'auth|dash'), function(){
//dashboard home
Route::get('/dashboard', function(){ return View::make('dashboard');});
//dashboard subs
Route::get('dashboard/modules', function(){ return View::make('forms.module');});
Route::get('dashboard/users', function(){ return View::make('users');});
Route::get('dashboard/reporting', function(){ return View::make('reporting');});
//user pages
Route::get('dashboard/register', function(){ return View::make('forms.register');});
Route::post('dashboard/edit/user', array('before'=>'csrfajax', function(){
$id = Input::get('userID');
$user = User::find($id);
return View::make('forms.editUser')->with('user', $user);
}));
});
表格......
{{ Form::open(array('files' => true, 'action' => 'ContentController@postSection', 'id' => 'sectionform')) }}
<fieldset>
{{ Form::label('Video (mp4)') }}
{{ Form::hidden('moduleID', $module->id)}}
{{ Form::file('video', array('id' => 'video', 'class' => 'form-control')) }}<br>
{{ Form::submit('Save') }}
</fieldset>
{{ Form::close() }}
答案 0 :(得分:0)
在routes.php
中,为了实现此方法,您使用Route::controller
,这会产生RESTful路由。如果浏览器的HTTP请求使用了POST操作,则您将正确路由到public function postSection(){}
。但是如果HTTP请求使用GET(这是Web浏览的默认设置),特别是当浏览器没有提交数据时,Laravel会寻找一种名为public function getSection(){}
的方法。这可以解释为什么当你上传某些内容(即使用POST)时,你会到达页面,否则你就不会。
有关隐式路由的完整内容,请参阅官方文档:http://laravel.com/docs/controllers#implicit-controllers