我在laravel项目中遇到控制器动作的问题,我不明白为什么,因为一切都很好。
关于错误部分的我的路线:
Route::get('/reminds','RemindController@index');
Route::get('/reminds','RemindController@create');
继承了RemindController.php文件中定义的create和index方法:
public function index()
{
$reminds = Remind::all();
return View::make('remind.index', compact('reminds'));
}
public function create()
{
try {
$listyears = RemindController::generate_list(date('Y')-100, 101);
$listmonths = RemindController::generate_list(1, 12);
$listdays = RemindController::generate_list(1, 31);
return View::make('remind.create', compact('listyears', 'listmonths', 'listdays'));
} catch (Exception $e){
App:abort(404);
}
}
在create.blade.php(提醒视图)中我有这个调用有问题的索引:
<div class="panel-heading">
<h2>create reminder</h2>
</div>
<div class="panel-body">
{!! Form::open(['action'=> 'RemindController@index', 'class' => 'form']) !!}
问题是每次我尝试访问调用提醒创建表单的页面时都会收到错误:
ErrorException (E_ERROR)
Action App\Http\Controllers\RemindController@index not defined. (View: C:\Users\myusername\Desktop\project\prototype\resources\views\remind\create.blade.php)
但是我清楚地定义了它。我不明白谢谢
答案 0 :(得分:2)
路线::得到(&#39; /提醒&#39;,&#39; RemindController @指数&#39); 路线::得到(&#39; /提醒&#39;,&#39; RemindController @创建&#39);
这是相同的路线,所以从技术上讲,你已经有了一个问题。尝试更改HTTP协议或重命名路由。
Route::get('reminds','RemindController@index');
Route::post('reminds','RemindController@create');
或
Route::get('reminds','RemindController@index');
Route::get('reminds/create','RemindController@create');
也已经省略了你路线上的第一个斜线,没有这样做。
---更新*
而不是使用静态调用Route
你可以使用这样的东西
$router->group(function(){
$this->get('/',['as' => "homepage" , 'use' => "MainController@homepage"] );
$this->group(['prefix' => "dashboard",'as' => "dashboard"],function(){
$this->get('/',['as' => "index",'use' => "DashboardController@index"]);
});
});
答案 1 :(得分:1)
您使用相同的网址和相同的方法定义了两条路线
Route::get('/reminds','RemindController@index');
Route::get('/reminds','RemindController@create');
重命名其中一个
Route::get('/reminds','RemindController@index');
Route::get('/reminds/create','RemindController@create');
答案 2 :(得分:0)
您为同一个http动词编写了相同的路径网址。
只需将它们重命名为您的要求即可。 为简单起见,建议为路由添加name()。
答案 3 :(得分:0)
以防万一这对某人有帮助,我也遇到了同样的错误,但是我的问题是在定义路线而不是Route::resource()
时不小心使用了Route::get()
。我认为这与Route::post()
的情况相同。