Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
При регистрации возникает ошибка "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>
В чем может быть проблема?
Не в сети
Так добавьте в роуты нужный метод POST, например:
Route::post('auth/register', 'Auth\AuthController@postRegister');
Так добавьте в роуты нужный метод POST, например:
Route::post('auth/register', 'Auth\AuthController@postRegister');
Смотрите у вас в форме метод post, в routes.php метод get описан для авторизации.
Либо поменяйте в routes.php метод на get (но это как то не очень правильно). Либо замените его на Route::post('auth/register', 'Auth\AuthController@getRegister');
Кратко так.
С ув., Алекс
Не в сети
Спасибо, получилось!
Изменено Danil (06.11.2015 17:23:25)
Не в сети
Не стал создавать новую тему. У меня такая ситуация:
Открываю статью на редактирование. Нажимаю "Сохранить" и получаю ошибку:
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. Как бы не закрыть.
Не в сети
Не в сети
}%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. Как бы не закрыть.
Не в сети
{!! Form::model($article, ['method' => 'patch', 'route' => 'articles.update']) !!}
И во всех инпутах добавьте вместо $article->value параметр null что б вот так получилось
Form::text('title', null) !!}
Если так не получится, то вот так попробуйте
Form::input('text', 'title' , null) !!}
Изменено TrueKanonir (10.11.2016 08:48:14)
Не в сети
А зачем обнулять инпуты? Я же открываю статью на редактирование?
Открываю для себя Laravel. Как бы не закрыть.
Не в сети
Я в общем переделал открытие формы вот так:
{!! 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. Как бы не закрыть.
Не в сети
А зачем обнулять инпуты? Я же открываю статью на редактирование?
Form model binding , значения подставляются. Попробуйте как я вам в примере показал сделать. Все сработает.
Не в сети
Я в общем переделал открытие формы вот так:
{!! 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)
Не в сети
Mick_20 пишет:А зачем обнулять инпуты? Я же открываю статью на редактирование?
Form model binding , значения подставляются. Попробуйте как я вам в примере показал сделать. Все сработает.
Не сработало: http://hostingkartinok.com/show-image.p … 84b1d9c8aa
Открываю для себя Laravel. Как бы не закрыть.
Не в сети
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. Как бы не закрыть.
Не в сети
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');
Не в сети
Сделал у себя, на только что установленном фрейме. Все пашет.
Controller
Благодарю Вас. Редактирование заработало.
А в каком методе нужно дописать Request для валидации?
в update?
Изменено Mick_20 (15.11.2016 08:57:43)
Открываю для себя Laravel. Как бы не закрыть.
Не в сети
TrueKanonir пишет:Сделал у себя, на только что установленном фрейме. Все пашет.
ControllerБлагодарю Вас. Редактирование заработало.
А в каком методе нужно дописать Request для валидации?
в update?
Да в update. У меня там дефолтный request, вы вместо него ставите свой реквест
Не в сети
Да в update. У меня там дефолтный request, вы вместо него ставите свой реквест
Форма тогда не отправляется. Страница перезагружается, но не меняется.
Открываю для себя Laravel. Как бы не закрыть.
Не в сети