3

私はlaravelが初めてで、今それを学んでいます。私は次のルートをroutes.phpファイルに与えています

Route::resource('contacts', 'ContactsController');

しかし、ブラウザでページをロードすると、次のエラーが表示されます

Unhandled Exception

Message:

Call to undefined method Laravel\Routing\Route::resource()
Location:

/Users/zafarsaleem/Sites/learning-laravel/application/routes.php on line 35

私の完全なroutes.phpファイルは以下です

Route::resource('contacts', 'ContactsController');

Route::get('/', function()   //<------- This is line 35
{
    return View::make('home.index');
});

このエラーを取り除くにはどうすればよいですか?

編集

ContactsController コードは以下にあり、index() 関数を使用したい

class ContactsController extends BaseController {

/**
 * Display a listing of the resource.
 *
 * @return Response
 */
public function index()
{
    Contact::all();
}

/**
 * Show the form for creating a new resource.
 *
 * @return Response
 */
public function create()
{
    //
}

/**
 * Store a newly created resource in storage.
 *
 * @return Response
 */
public function store()
{
    $input = Input::json();

    Contact::create(array(
        'first_name' => $input->first_name
        'last_name' => $input->last_name
        'email_address' => $input->email_address
        'description' => $input->description
    ));
}

/**
 * Display the specified resource.
 *
 * @return Response
 */
public function show($id)
{
    return Contact::find($id);
}

/**
 * Show the form for editing the specified resource.
 *
 * @return Response
 */
public function edit($id)
{
    //
}

/**
 * Update the specified resource in storage.
 *
 * @return Response
 */
public function update($id)
{
    $contact = Contact::find($id);
    $input = Input::json();

    $contact->first_name = $input->first_name;
    $contact->last_name = $input->last_name;
    $contact->email_address = $input->email_ddress;
    $contact->description = $input->description;

    $contact->save();
}

/**
 * Remove the specified resource from storage.
 *
 * @return Response
 */
public function destroy($id)
{
    return Contact::find($id)->delete();
}

}

編集 2

次の両方のルートを試しましたが、同じエラーが発生しました

Route::resource('contacts', 'ContactsController', ['only', => ['index']]);
Route::get('contacts','ContactsController@index');

laravel 4を再インストールした後、次のエラーが発生します

404 Not Found

The requested URL /contacts was not found on this server.
_____________________________________________________________________
Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15 with Suhosin-Patch Server at bb.dev Port 80

編集 3

「/private/etc/apache2/users/.conf」を編集し、「AllowOverride None」から「AllowOverride All」に変更してから、Apacheサーバーを再起動しました。今、次のエラーが発生しています

403 Forbidden

You don't have permission to access /contacts on this server.
__________________________________________________________________________________
Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15 with Suhosin-Patch Server at bb.dev Port 80

この連絡先コントローラーのアクセス許可がないのはなぜですか? それは今私を夢中にさせています。

ここに私の.htaccessファイルがあります

<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
4

5 に答える 5

9

これを別のサーバーで試しましたか?書き直すと多くのことがうまくいかない可能性があるため (.htaccess の修正に何時間も費やしました)、問題は Laravel ではなく Apache にある可能性があります。

これは私にとってはうまくいきますpublic/.htaccess

<IfModule mod_rewrite.c>
     RewriteEngine on

     RewriteCond %{REQUEST_FILENAME} !-f
     RewriteCond %{REQUEST_FILENAME} !-d

     RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

index.php/contacts代わりに に行ってみました/contactsか? それが機能する場合、問題は Laravel ではなく Apache にあります。

于 2013-04-06T14:11:53.887 に答える
0

名前空間の問題である可能性があります - Illuminate \Routing\Routerで関数を呼び出す必要がありますが、例外はLaravel \Routing\Route::resource() を参照しています。

構成ファイルにまだ Laravel3 への参照が含まれている可能性はありますか?

于 2013-01-24T06:28:27.153 に答える
0

わかりました、1分前まで問題がありました! 解決するのは ide-helper のためです。routes.php の次のコードをコメントする必要があります。

use Illuminate\Routing\Route;
于 2015-08-11T06:09:04.387 に答える
0

同じ $#%& 問題があり、何時間も検索した結果、.httacess ファイルの問題ではないことがわかりました。これを修正するために私がしたこと:

composer update --dev

--devビットが大事だと思います。それが誰かを助けることを願っています。

于 2014-03-09T08:54:23.343 に答える