2016-08-17 1 views
0

После того, как я разворачиваю свое веб-приложение Laravel на своем хосте, мой код не работал как локальный. У меня есть форма и POST это маршрут, он вызывает контроллер, который обрабатывает любые запросы. Я хочу реагировать на каждый тип запроса, но Request::Method() функция возвращает GET.Laravel 5 - Request :: Method() возвращает неправильный тип запроса и Input :: all() возвращает пустые

Маршрут:

Route::any('/', [ 
'as' => 'root', 'uses' => '[email protected]']); 

клинка:

<form action="{{ URL::route('root') }}" method="POST"> 
    <input type="hidden" name="_token" value="{{{ csrf_token() }}}"> 
    <input type="hidden" name="newsId" value="{{ $newsId }}"> 
    <input type="hidden" name="orders" id="orders" value=""> 
    <button class="btn" name="next">NEXT</button> 
    <button class="btn" name="save">SAVE</button> 
</form> 

Контроллер:

if (Request::isMethod('get')) { 
    $newsId = (Auth::user()->last_news_id % 100) + 1; 
    $sentences = News::find($newsId)->sentences; 
    return view('summarizer')->with(['sentences' => $sentences, 'newsId' => $newsId]); 
} elseif (Request::isMethod('POST')) { 
    return 'post'; 
} 

Также я использовал Request::Method() и retures GET за все время! Я тестировал эти коды в своем локальном хосте, и он отлично работает.

EDIT: Удивительно, что Input :: all() также возвращает пустое значение. Он работает в местном колодце.

+0

Чтобы быть уверенным, проверьте вашу форму и проверьте, есть ли действительно 'метод =«POST»' как атрибут. Кроме того, возможно, вам нужно загладить '' get'' в вашей 'isMethod ('GET')' check. Вы никогда не знаете :) –

+1

@ThomasVanderVeen прав, параметр должен быть «методом запроса верхнего уровня (GET, POST и т. Д.)». (исходные документы: http://api.symfony.com/2.8/Symfony/Component/HttpFoundation/Request.html#method_isMethod) –

+0

Спасибо за ваш ответ. Я капитулировал их всех, но ничего не изменилось. –

ответ

0

Попробуйте этот способ. Сделайте инъекцию зависимости класса запроса в методе index(). как это

public function index(Request $request) { 
    if ($request->isMethod('get')) { 
    // your code 
    }elseif ($request->isMethod('post')) { 
    // your code 
    } 
+0

Спасибо за ваш ответ, но это не решит проблему. –

0

Лучший и простой способ, чтобы создать 2 маршрута,

Route::get('/', [ 
'as' => 'root', 'uses' => '[email protected]']); 
Route::post('/', [ 
'as' => 'root', 'uses' => '[email protected]']); 

Затем создайте две функции в контроллере. Теперь попробуйте добавить dd (Input :: all()) в postFunction, чтобы проверить, все ли пуст вход: all().
На дополнительных вещах, лучше практика, чтобы использовать лезвие, чтобы создать форму:

{{ Form::open(['route' => 'root','method' => 'post']) }} 
    // 
{{ Form::close() }}