Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 05.11.2015 21:41:39

Ошибка MethodNotAllowedHttpException in RouteCollection.php line 219:

При регистрации возникает ошибка "MethodNotAllowedHttpException in RouteCollection.php line 219"
В Роутах прописано:

Route::any('/', function() {
  return view('index');
});

Route::get('auth/login', 'Auth\AuthController@getLogin');

Route::get('auth/register', 'Auth\AuthController@getRegister');

Код формы:

        <form action="/auth/register" method="post" class="form-horizontal">
            {!! csrf_field() !!}
            <div class="control-group">
                <b>Регистрация</b>
            </div>
            <div class="control-group">
                <input type="text" id="inputLogin" name="username" placeholder="Логин" data-cip-id="inputLogin"
                       autocomplete="off">
            </div>
            <div class="control-group error">
                <input type="password" id="inputPassword" name="password" placeholder="Пароль"
                       data-cip-id="inputPassword">
                <span class="help-inline">Текст ошибки</span>
            </div>
            
            <div class="control-group error">
                <input type="password" id="inputPassword2" name="password_confirmation" placeholder="Повторите пароль"
                       data-cip-id="inputPassword2">
                <span class="help-inline">Текст ошибки</span>
            </div>
            <div class="control-group">
                <button type="submit" class="btn btn-primary">Отправить</button>
            </div>
        </form>
    </div>
</div>

В чем может быть проблема?

Не в сети

#2 06.11.2015 00:48:38

zpnick

Re: Ошибка MethodNotAllowedHttpException in RouteCollection.php line 219:

Так добавьте в роуты нужный метод POST, например:
Route::post('auth/register', 'Auth\AuthController@postRegister');

#3 06.11.2015 05:18:27

Alexsaab
Откуда: Москва
Сообщений: 92

Re: Ошибка MethodNotAllowedHttpException in RouteCollection.php line 219:

123 пишет:

Так добавьте в роуты нужный метод POST, например:
Route::post('auth/register', 'Auth\AuthController@postRegister');

Смотрите у вас в форме метод post, в routes.php метод get описан для авторизации.

Либо поменяйте в routes.php метод на get (но это как то не очень правильно). Либо замените его на Route::post('auth/register', 'Auth\AuthController@getRegister');

Кратко так.

С ув., Алекс

Не в сети

#4 06.11.2015 17:23:17

Re: Ошибка MethodNotAllowedHttpException in RouteCollection.php line 219:

Спасибо, получилось!

Изменено Danil (06.11.2015 17:23:25)

Не в сети

#5 09.11.2016 10:52:28

Mick_20
Откуда: Кемерово
Сообщений: 39
Сайт

Re: Ошибка MethodNotAllowedHttpException in RouteCollection.php line 219:

Не стал создавать новую тему. У меня такая ситуация:

Открываю статью на редактирование. Нажимаю "Сохранить" и получаю ошибку:
http://hostingkartinok.com/show-image.p … 7e1cd95e1b

Подскажите?

Отображение формы редактирования:

{!! Form::open(['route' => 'articles.update']) !!}

	{!! Form::label('title', 'Заголовок') . Form::text('title', $article->title) !!}<br>
	{!! Form::label('alias', 'URL псевдоним') . Form::text('alias', $article->alias) !!}<br>
	{!! Form::label('excerpt', 'Короткое описание') . Form::text('excerpt', $article->excerpt) !!}<br>
	{!! Form::label('content', 'Полный текст статьи') . Form::textarea('content', $article->content) !!}<br>

	{!! Form::submit('Сохранить') !!}

{!! Form::close(); !!}

Контроллер:

...

public function edit($id)
	{
		$article=Article::find($id);
		return view('articleedit',['article'=>$article]);
	}
	public function update(Request $request, $id) /* не обновляет статью. ошибка! */
	{
		$article=Article::find($id);
		$article->update($request->all());
		$article->save();
		//return back()->with('message','Статья обновлена');
	}

...

Роуты:

Route::get('/', [
	'uses' => 'ArticlesController@index', 
	'as' => 'articles'
]);

Route::get('article/{id}', 'ArticlesController@showArticle'); //страница просмотра статьи

$router->resource('articles', 'ArticlesController');//создает все маршруты дл¤ манипул¤ций со стать¤ми

Открываю для себя Laravel. Как бы не закрыть.

Не в сети

#6 09.11.2016 13:51:23

TrueKanonir
Откуда: Ташкент
Сообщений: 221

Re: Ошибка MethodNotAllowedHttpException in RouteCollection.php line 219:

Mick_20,
В Form::open добавьте 'method' => 'patch' в итоге получится

PHP
{!! Form::open(['method' => 'patch''route' => 'articles.update']) !!}

И отдельный роут для просмотра можно убрать, он в ресурсе уже есть

Не в сети

#7 10.11.2016 06:57:47

Mick_20
Откуда: Кемерово
Сообщений: 39
Сайт

Re: Ошибка MethodNotAllowedHttpException in RouteCollection.php line 219:

TrueKanonir пишет:

}%Mick_20,
В %%Form::open%% добавьте %%'method' => 'patch'%% в итоге получится
%%(php)
{!! Form::open(['method' => 'patch', 'route' => 'articles.update']) !!}
%%
И отдельный роут для просмотра можно убрать, он в ресурсе уже есть


Отдельный роут пока не сделал. Надо разбираться.
А форма редактирования теперь другую ошибку пишет:
http://hostingkartinok.com/show-image.p … 9fa6caa1a8

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

Контроллер:

	public function update(Request $request, $id) 
	{
		$article = Article::findOrFail($id);
        	$article->update($request->all());
        	$article->save();
        	return back()->with('message','Статья обновлена');
	}

Открываю для себя Laravel. Как бы не закрыть.

Не в сети

#8 10.11.2016 08:47:31

TrueKanonir
Откуда: Ташкент
Сообщений: 221

Re: Ошибка MethodNotAllowedHttpException in RouteCollection.php line 219:

Mick_20,
Тогда сделайте так

PHP
{!! Form::model($article, ['method' => 'patch''route' => 'articles.update']) !!}

И во всех инпутах добавьте вместо $article->value параметр null что б вот так получилось

PHP
Form::text('title'null) !!}

Если так не получится, то вот так попробуйте

PHP
Form::input('text''title' null) !!}

Так точно сработает

Изменено TrueKanonir (10.11.2016 08:48:14)

Не в сети

#9 10.11.2016 09:05:02

Mick_20
Откуда: Кемерово
Сообщений: 39
Сайт

Re: Ошибка MethodNotAllowedHttpException in RouteCollection.php line 219:

А зачем обнулять инпуты? Я же открываю статью на редактирование?


Открываю для себя Laravel. Как бы не закрыть.

Не в сети

#10 10.11.2016 09:09:48

Mick_20
Откуда: Кемерово
Сообщений: 39
Сайт

Re: Ошибка MethodNotAllowedHttpException in RouteCollection.php line 219:

Я в общем переделал открытие формы вот так:

{!! Form::open(array('action' => array('ArticlesController@update', $article->id))) !!}

Теперь id статьи вроде передается: http://hostingkartinok.com/show-image.p … 972e173a97

Но ругается на роуты, если не ошибаюсь: http://hostingkartinok.com/show-image.p … f040a3ee51

Изменено Mick_20 (10.11.2016 09:11:20)


Открываю для себя Laravel. Как бы не закрыть.

Не в сети

#11 10.11.2016 09:31:54

TrueKanonir
Откуда: Ташкент
Сообщений: 221

Re: Ошибка MethodNotAllowedHttpException in RouteCollection.php line 219:

Mick_20 пишет:

А зачем обнулять инпуты? Я же открываю статью на редактирование?

Form model binding , значения подставляются. Попробуйте как я вам в примере показал сделать. Все сработает.

Не в сети

#12 10.11.2016 09:32:58

TrueKanonir
Откуда: Ташкент
Сообщений: 221

Re: Ошибка MethodNotAllowedHttpException in RouteCollection.php line 219:

Mick_20 пишет:

Я в общем переделал открытие формы вот так:

{!! Form::open(array('action' => array('ArticlesController@update', $article->id))) !!}

Теперь id статьи вроде передается: http://hostingkartinok.com/show-image.p … 972e173a97

Но ругается на роуты, если не ошибаюсь: http://hostingkartinok.com/show-image.p … f040a3ee51

Вы не указали метод patch
UPD: Он находит статью для редактирования, но при отправке формы вы не указываете id статьи. В контроллере сделайте dd($request->all()). Создайте input type hidden value="{{ $article->id }}" name id

Изменено TrueKanonir (10.11.2016 09:36:58)

Не в сети

#13 10.11.2016 10:19:20

Mick_20
Откуда: Кемерово
Сообщений: 39
Сайт

Re: Ошибка MethodNotAllowedHttpException in RouteCollection.php line 219:

TrueKanonir пишет:
Mick_20 пишет:

А зачем обнулять инпуты? Я же открываю статью на редактирование?

Form model binding , значения подставляются. Попробуйте как я вам в примере показал сделать. Все сработает.

Не сработало: http://hostingkartinok.com/show-image.p … 84b1d9c8aa


Открываю для себя Laravel. Как бы не закрыть.

Не в сети

#14 10.11.2016 10:21:44

Mick_20
Откуда: Кемерово
Сообщений: 39
Сайт

Re: Ошибка MethodNotAllowedHttpException in RouteCollection.php line 219:

TrueKanonir пишет:
Mick_20 пишет:

Я в общем переделал открытие формы вот так:

{!! Form::open(array('action' => array('ArticlesController@update', $article->id))) !!}

Теперь id статьи вроде передается: http://hostingkartinok.com/show-image.p … 972e173a97

Но ругается на роуты, если не ошибаюсь: http://hostingkartinok.com/show-image.p … f040a3ee51

Вы не указали метод patch
UPD: Он находит статью для редактирования, но при отправке формы вы не указываете id статьи. В контроллере сделайте dd($request->all()). Создайте input type hidden value="{{ $article->id }}" name id

Опять выдает: MethodNotAllowedHttpException in RouteCollection.php line 218:


Открываю для себя Laravel. Как бы не закрыть.

Не в сети

#15 10.11.2016 11:22:14

TrueKanonir
Откуда: Ташкент
Сообщений: 221

Re: Ошибка MethodNotAllowedHttpException in RouteCollection.php line 219:

Mick_20 пишет:
TrueKanonir пишет:
Mick_20 пишет:

Я в общем переделал открытие формы вот так:

{!! Form::open(array('action' => array('ArticlesController@update', $article->id))) !!}

Теперь id статьи вроде передается: http://hostingkartinok.com/show-image.p … 972e173a97

Но ругается на роуты, если не ошибаюсь: http://hostingkartinok.com/show-image.p … f040a3ee51

Вы не указали метод patch
UPD: Он находит статью для редактирования, но при отправке формы вы не указываете id статьи. В контроллере сделайте dd($request->all()). Создайте input type hidden value="{{ $article->id }}" name id

Опять выдает: MethodNotAllowedHttpException in RouteCollection.php line 218:

Сделал у себя, на только что установленном фрейме. Все пашет.
Controller

/**
 * Show the form for editing the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function edit($id)
{
    $article = Article::find($id);
    return view('edit', compact('article'));
}

/**
 * Update the specified resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function update(Request $request, $id)
{
    $article = Article::find($id);
    $article->update($request->all());
    return redirect('articles');
}

View

@extends('layout')
@section('content')
<h1>Редактирование статьи {{ $article->name }}</h1>
{!! Form::model($article, ['method' => 'patch', 'url' => ['articles/' . $article->id]]) !!}
{!! Form::input('text', 'name', null) !!}
{!! Form::input('text', 'slug', null) !!}
{!! Form::textarea('body', null) !!}
<button type="submit">Отправить</button>
{!! Form::close() !!}
@endsection

Route

Route::resource('articles', 'ArticlesController');

Не в сети

#16 15.11.2016 08:56:15

Mick_20
Откуда: Кемерово
Сообщений: 39
Сайт

Re: Ошибка MethodNotAllowedHttpException in RouteCollection.php line 219:

TrueKanonir пишет:

Сделал у себя, на только что установленном фрейме. Все пашет.
Controller

Благодарю Вас. Редактирование заработало.


А в каком методе нужно дописать Request для валидации?
в update?

Изменено Mick_20 (15.11.2016 08:57:43)


Открываю для себя Laravel. Как бы не закрыть.

Не в сети

#17 15.11.2016 16:19:52

TrueKanonir
Откуда: Ташкент
Сообщений: 221

Re: Ошибка MethodNotAllowedHttpException in RouteCollection.php line 219:

Mick_20 пишет:
TrueKanonir пишет:

Сделал у себя, на только что установленном фрейме. Все пашет.
Controller

Благодарю Вас. Редактирование заработало.


А в каком методе нужно дописать Request для валидации?
в update?

Да в update. У меня там дефолтный request, вы вместо него ставите свой реквест

Не в сети

#18 16.11.2016 09:17:36

Mick_20
Откуда: Кемерово
Сообщений: 39
Сайт

Re: Ошибка MethodNotAllowedHttpException in RouteCollection.php line 219:

TrueKanonir пишет:

Да в update. У меня там дефолтный request, вы вместо него ставите свой реквест

Форма тогда не отправляется. Страница перезагружается, но не меняется.


Открываю для себя Laravel. Как бы не закрыть.

Не в сети

Подвал раздела