2014-01-04 6 views
12

Я пытаюсь создать форму с соответствующим методом контроллера, который добавляет новую запись в БД. Laravel версия 4,1Маршрут [Метод контроллера @] не определен

приложение/просмотров/projects.blade.php

<tr> 
    {{Form::open(array('action' => '[email protected]', 'method' => 'post'))}} 
     <td>{{Form::text('project_number')}}</td> 
     <td>{{Form::text('title')}}</td> 
     <td>{{Form::text('client')}}</td> 
     <td>{{Form::text('comment')}}</td> 
     <td> 
      {{Form::file('xmlfile')}}<br /> 
      {{Form::submit('Hinzufügen',array('class' => 'blue'))}} 
     </td> 
    {{ Form::close() }} 
</tr> 

приложение/контроллеры/ProjectController

<?php 

class ProjectController extends BaseController { 

    public function listProjects(){ 
     $projects = Project::all(); 
     return View::make('projects',array('projects' => $projects)); 
    } 

    public function createProject(){ 
     /* handling the form data later 
      . 
      . 
      . 
      */ 
     return "Hello"; 
    } 
} 
?> 

routes.php

// Project Routes 
Route::get('/projects', array('as' => 'listProjects', 'uses' => '[email protected]')); 
Route::get('/projects/{id}', array('as' => 'actionProject', 'uses' => '[email protected]')); 

// Canal Routes 
Route::get('/canals', array('as' => 'listCanals', 'uses' => '[email protected]')); 

Сообщение об ошибке

ErrorException Маршрут [ProjectController @ createProject] не определено. (Вид: /var/www/virtual/hwoern/laravel/app/views/projects.blade.php)

Показать существующие проекты с помощью метода списка в проектах вид работает отлично. Что я забыл?

+0

Здравствуйте, вы можете поделиться своими маршрутами? – Anam

+0

'// Маршруты проекта Маршрут :: get ('/ projects', array ('as' => 'listProjects', 'uses' => 'ProjectController @ listProjects')); Route :: get ('/ projects/{id}', array ('as' => 'actionProject', 'uses' => 'ProjectController @ actionProject')); // Канал Маршруты Route :: Get ('/' каналов, массив ('а' => 'listCanals', 'использует' => 'CanalController @ listCanals')); ' – lasagne

+0

Я нашел эту проблему, проверьте ответ. – Anam

ответ

23

Вы получили сообщение Route [[email protected]] not defined, потому что вы не создали почтовый маршрут для действия [email protected].

Вы должны определить следующий маршрут:

route.php

Route::post('new-project', array('uses' => '[email protected]')); 
+1

Спасибо! Просто для того, чтобы было ясно, я должен определить маршрут, даже если я никогда не получаю доступ к действию через URL-адрес? – lasagne

+4

вы должны определить маршруты для любого URL-адреса, и если вы укажете метод контроллера из ссылок или формы. В противном случае нет необходимости. – Anam

+0

Я использую Laravel 5.3, и я не могу найти, где 'route.php'. Вместо этого я нашел '\ vendor \ symfony \ routing \ Route.php ', но я не уверен, что это правильный файл. Пожалуйста помоги. – ITWitch

Смежные вопросы