2017-11-30 69 views
0

私はlaravelプロジェクトのコントローラアクションに問題があります。相続人アクションが定義されていませんlaravel/php controller

エラー部分についての私のルート:相続人

Route::get('/reminds','[email protected]'); 
Route::get('/reminds','[email protected]'); 

作成し、RemindController.phpファイルで定義されているインデックス方式:create.blade.phpで

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); 
    } 
} 

(の私は問題のある指標と呼んでいます)

<div class="panel-heading"> 
    <h2>create reminder</h2> 
</div> 
<div class="panel-body"> 
    {!! Form::open(['action'=> '[email protected]', 'class' => 'form']) !!} 

問題はそれぞれリマインダ作成フォームを呼び出すページにアクセスしようとするとエラーが表示されます。

ErrorException (E_ERROR) 
Action App\Http\Controllers\[email protected] not defined. (View: C:\Users\myusername\Desktop\project\prototype\resources\views\remind\create.blade.php) 

しかし、私はそれを明確に定義しました。わかりません。

答えて

2

ルート::取得( 'インデックス@ RemindController'、 '/が思い出させます') ; ルート:: get( '/ reminds'、 'RemindController @ create');

これは同じルートなので、技術的にはこの部分に問題があります。代わりにHTTPプロトコルを変更するか、ルートの名前を変更してください。

Route::get('reminds','[email protected]'); 
Route::post('reminds','[email protected]'); 

または

Route::get('reminds','[email protected]'); 
Route::get('reminds/create','[email protected]'); 

もそれを行うのない使用はありません、すでにあなたのルート上の最初のスラッシュを省略します。

---更新*

の代わりに、静的なコールルートに

を使用して、あなたはあなたが同じHTTP動詞の同じルートURLを書かれているこの

$router->group(function(){ 
    $this->get('/',['as' => "homepage" , 'use' => "[email protected]"]); 

    $this->group(['prefix' => "dashboard",'as' => "dashboard"],function(){ 
     $this->get('/',['as' => "index",'use' => "[email protected]"]); 
}); 
}); 
+0

ありがとうございます!よく説明されています。これはlaravel 5以降の新しいことですか? –

+0

は実際にはありません。グローバル変数の静的呼び出しはもはや推奨されません。 Route::()、Session ::、Cache :: etcなどではなく、route() - >、session() - >、cache() - > etcを使用することができます。これははっきりと –

1

ありがとうあなたは

Route::get('/reminds','[email protected]'); 
Route::get('/reminds','[email protected]'); 

が、そのうちの一つの名前を変更し、同じURLと同じ方法で2つのルートを定義し

Route::get('/reminds','[email protected]'); 
Route::get('/reminds/create','[email protected]'); 
+0

Route :: get( '/ reminds/create'、 'RemindController @ create'); Route :: post( '/ reminds'、 'RemindController @ create')とするべきでしょう。 – jcorry

+1

@jcorry彼の作成メソッドは、データを表示するためのものです。だから、それは大丈夫です。ポストはストアメソッドのためにもっとです –

+0

ああ、私は見る...私はメソッド名を過ぎて読まなかった。 – jcorry

0

のようなものを使用することができます。

あなたの要件として名前を変更してください。 簡略化のため、ルートにname()を追加することを提案します。

関連する問題