2015-04-23 23 views
11

Sau khi cập nhật từ Laravel 4,2-5,0, Tôi nhận được thông báo sau trong hầu hết các trang của ứng dụng của tôi:Laravel hành động không được định nghĩa

InvalidArgumentException trong UrlGenerator.php dòng 561: Hành động ArticlesController @ tạo các không xác định.

Trong file routes.php của tôi, tôi có:

Route::get('articles/create', ['as' => 'articles.create', 'uses' => '[email protected]']); 
Route::post('articles/create', ['as' => 'articles.create.handle', 'uses' => '[email protected]']); 

Và trong bộ điều khiển của tôi:

class ArticlesController extends Controller { 

    public function create() 
    { 
     $input=null; 
     if (Input::old()) { 
      $input = Input::old(); 
     } 
     $tagsJson = Tag::all()->toJson(); 
     $categories = ArticleCategory::all(); 
     return View::make('admin.articles.create', compact(array('tagsJson', 'categories', 'input'))); 
    } 

    public function handleCreate() 
    { 
     $input = Input::all(); 

     if ($input['op']=="preview") { 
      return redirect()->action('[email protected]')->withInput(); 
     } else if ($input['op']=="post") { 
      // 
     } 

    } 
} 

Các lỗi tôi nhận được xuất phát từ dòng này:

return redirect()->action('[email protected]')->withInput(); 

Bất kỳ Cứu giúp? Cảm ơn, Ilias

+4

Vui lòng chạy 'php artisan route: list' và xem liệu route' ArticlesController @ create' có được liệt kê không. – lukasgeiter

+0

return redirect() -> action ('Ứng dụng \ Http \ Controllers \ ArticlesController @ create'); –

+0

Tính năng này có hoạt động nếu bạn đi theo cách thủ công đến 'bài viết/tạo' không? Tôi sẽ đề nghị sử dụng các tuyến đường thay vì hành động 'redirect() -> route ('articles.create');' –

Trả lời

4

Bạn gặp phải lỗi này vì Laravel 5 sử dụng tính năng đặt tên theo mặc định. Các Laravel 5 hướng dẫn nâng cấp chính thức cho biết như sau về việc chuyển các bộ điều khiển của bạn:

Kể từ khi chúng tôi sẽ không chuyển sang không gian tên đầy đủ trong hướng dẫn này, thêm ứng dụng/Http/thư mục Controller để chỉ thị classmap của nhà soạn nhạc của bạn. tập tin json. Tiếp theo, bạn có thể loại bỏ không gian tên từ lớp cơ sở/Http/Controllers/Controller.php trừu tượng. Xác minh rằng các bộ điều khiển di trú của bạn đang mở rộng lớp cơ sở này.

Trong tệp ứng dụng/nhà cung cấp/RouteServiceProvider.php của bạn, đặt thuộc tính không gian tên thành rỗng.

Được liệt kê here trong "bộ điều khiển".

Dòng cuối cùng có thể là giải pháp sẽ giải quyết vấn đề của bạn.

0

bạn phải xác định các tuyến cho bất kỳ URL nào được tạo và nếu bạn đang trỏ một phương thức điều khiển từ liên kết hoặc biểu mẫu. hành động liên kết đến các phương pháp phụ thuộc vào các tuyến đường ..

Khi bạn tạo một tuyến đường cho điều này, nó sẽ hoạt động và lỗi sẽ biến mất.

Các vấn đề liên quan