0

Laravel 4 で安らかな API を作成しようとしていますが、常にエラーが発生します。

"Symfony\Component\HttpKernel\Exception\NotFoundHttpException","メッセージ":"コントローラーのメソッドが見つかりません."

routes-first-in-first-outの説明に従います。しかし、私には運がありませんでした。

私のルートは次のようになります。

Route::group(array('prefix' => 'api/v1'), function(){
    Route::resource('contact', 'ContactController');
});

Route::get('/', function(){
    return View::make('hello');
});

そして、コントローラーのメソッドは次のようになります

public function store()
{
 // ... somecode       
}

そして、私は自分が何を間違っているのか分かりません。私はすでにここで検索していますが、同じ結果が得られ続けています。

誰が問題がどこにあるか知っていますか?

4

2 に答える 2

1

まず、Restful Controller について詳しく学ぶ必要があります。ドキュメントページをよく見ると、そこの表に..

あなたの行動storeは言う:

Verb    Path        Action  Route Name
POST    /resource   store   resource.store

つまり:

  1. store は、POST 要求を使用する場合にのみトリガーできます (verb上の表の)。
  2. あなたの場合、これpathは /resource ですapi/v1/contact
  3. 名前付きルートを使用してリダイレクトする場合は、ルート名を使用します (例: Redirect::route('api/v1/contact.create') go to add page )意味があるので、代わりに create を使用しました

質問に戻ります..

「api/v1/contact/store」の URL を使用してブラウザ経由で移動すると、そのルートへの GET リクエストが生成されますが、store は POST リクエストを想定しています。フォームからストアの URL に POST を送信すると成功しますが、ブラウザ (GET) 経由でアクセスすると、get 'api/v1/contact がないため、ルートが見つからないというエラーが必ず発生します。 /store' ルート宣言..

于 2013-08-31T03:07:51.330 に答える
0

最初にJavaScriptで作成した投稿リクエストの後、リダイレクトがトリガーされるため、失敗することがわかりました。どうしてか分かりません。.htacces ファイルは laravel intalation のオリジナルで、仮想ホストは次のとおりです。

<VirtualHost *:80>
        ServerName raulcm.laravel
        DocumentRoot /var/www/raulcm.laravel/public
        <Directory /var/www/raulcm.laravel/public>
                Options Indexes FollowSymLinks Includes ExecCGI
                DirectoryIndex index.php
                AllowOverride All
                Order deny,allow
                Allow from all
        </Directory>
        ErrorLog /var/www/raulcm.laravel/logs/error.log
        CustomLog /var/www/raulcm.laravel/logs/access.log common
</VirtualHost>
于 2013-09-02T08:39:22.983 に答える