 Laravel по-русски
Laravel по-русски
      
      
    Русское сообщество разработки на 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() !!}
@endsectionRoute
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. Как бы не закрыть.
Не в сети