сообщение о выпуске laravel

Я создаю практическое приложение с Laravel Я построил форму в одном из представлений, которое настроено для публикации в том же самом представлении, но когда я ударил, отправьте форму, опубликованную, однако я не получаю желаемый результат, я вижу оригинальный вид снова.

Вот мой взгляд index.blade.php

 @extends('master') @section('container') <div class="wrapper"> {{ Form::open(array('url' => '/', 'method' => 'post')) }} {{ Form::text('url') }} {{ Form::text('valid') }} {{ Form::submit('shorten') }} {{ Form::close() }} </div><!-- /wrapper --> @stop 

и мои маршруты.php

 Route::get('/', function() { return View::make('index'); }); Route::post('/', function() { return 'successfull'; }); 

То, что я пробовал до сих пор

  • Я попытался изменить сообщение на другое представление, и оно сработало. Однако я хочу, чтобы форма отправлялась на ту же самую точку зрения.

  • Вместо того, чтобы возвращать строку, которую я пытался вернуть, все же это не сработало.

Что я делаю не так?

добавление

Я вижу, что, когда форма создает почтовый запрос, я получаю 301 MOVED PERMANENTLY HEADER

 {{ Form::open(array('url' => ' ', 'method' => 'post')) }} 

Передача пробела, поскольку URL-адрес работал для меня.

Я думаю, что этот пост: Форма, представленная как GET Laravel 4 , связана с вашей проблемой. Я думаю, что проблема, поскольку я недооцениваю это, вызвана концом URL-адреса формы с /. Я нашел это, когда у меня возникли проблемы с использованием сообщения в ./ url в моей форме. Существует также ошибка в github, которая, похоже, связана с https://github.com/laravel/framework/issues/1804 .

Я знаю, что это старый вопрос, но я нашел эту тему той же проблемой, поэтому, надеюсь, кому-то помог мой ответ.

Вам нужно убедиться, что метод вашей формы НЕ заканчивается на / для правильной маршрутизации. Например, если у вас есть следующий маршрут:

 Route::post('form/process', function() { # code here ... }); 

Затем вам нужно иметь следующее определение формы:

 <form action="/form/process" method="POST"> 

Надеюсь, это поможет.

У меня такая же проблема с OSx + MAMP, изначально я решил с решением Рауля:

 {{ Form::open(array('url' => ' ', 'method' => 'post')) }} 

но после консультации с моим другом мы пришли к выводу, что моя проблема связана с тем, что мой проект lavarel доступен по длинному локальному пути:

  http://localhost/custom/custom2/... 

в этом месте метод post / get на корневом пути («/») работает некорректно.

Lavarel для корректной работы должен быть доступен «vhost», в этом случае проблема метода get / post в корневом расположении «/» не существует.

Мой друг посоветовал мне использовать http://www.vagrantup.com/

ПОКА

В Документах Laravel есть полезная информация. Проверьте их:

  • Контроллеры ресурсов (или контроллеры RESTful )
  • Формы и HTML
    • Открытие формы
  • маршрутизация
    • Именованные маршруты

Я рекомендую вам прочитать документацию по контроллерам ресурсов, поскольку она упрощает обработку форм.

Ну, вы просто вернете представление, поэтому ничего не изменится. Вы должны привязать свой маршрут к контроллеру, чтобы сделать некоторую логику и добавить данные в свой вид, например:

index.blade.php

 @extends('master') @section('container') <div class="wrapper"> @if (isset($message)) <p>{{$message}}</p> @endif {{ Form::open(array('url' => '/', 'method' => 'post')) }} {{ Form::text('url') }} {{ Form::text('valid') }} {{ Form::submit('shorten') }} {{ Form::close() }} </div><!-- /wrapper --> @stop 

Ваши маршруты

 Routes::any('/', 'home@index'); 

Вы контроллер HomeController.php

 public function index() { $data = array(); $url = Input::get('url'); if ($url) $data['message'] = "foo"; return View::make('index', $data); } 

Вы также можете изменить свои текущие маршруты, не используя такой контроллер (используйте новый файл вида)

 Route::get('/', function() { return View::make('index'); }); Route::post('/', function() { return View::make('index')->with('message', 'Foo'); }); 

Проблема заключается в defualt, сокращенном в Apache от 2.0.51 и выше: http://httpd.apache.org/docs/2.2/mod/mod_dir.html#directoryslash

Лучшее решение, если вы не хотите менять конфигурацию Apache, состоит в том, чтобы опубликовать сообщение по другому пути:

ХОРОШО:

 Route::get('/', ['as' => 'wizard', 'uses' => 'WizardController@create']); Route::post('wizard-post', ['as' => 'wizard_store', 'uses' => 'WizardController@store']); 

НЕХОРОШО:

 Route::get('/', ['as' => 'wizard', 'uses' => 'WizardController@create']); Route::post('/', ['as' => 'wizard_store', 'uses' => 'WizardController@store']);