Laravel Form не работает: контроллер не вызывается - PullRequest
0 голосов
/ 11 февраля 2019

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

Проблема проста: когда я нажимаю кнопку отправки формы, ничего не происходит.Мол, буквально ничего.Никаких ошибок, ничего.Перед тем, как приступить к разработке формы, я создал модель Message, выполнив

php artisan make:model Message --resource

. Таким образом, у меня есть методы создания, хранения и т. Д., Которые уже сделаны и готовы (спасибо, ремесленник!).В моем файле маршрута web.php у меня есть:

Route::resource('Message','MessageController');

Это должно автоматически связать все методы, верно?

В любом случае, моя форма:

{!!  Form::open(['action' => 'MessageController@store', 'method' => 'POST']) !!}
                                    <ul class="row">
                                        <li class="col-sm-6">
                                            <label>{{Form::label('name','Name')}}</label>
                                                {{Form::text('name', '', ['class' => 'form-control'])}}
                                        </li>
                                        <li class="col-sm-6">
                                            <label>{{Form::label('email','Email')}}</label>
                                                {{Form::text('email', '', ['class' => 'form-control', 'placeholder' => 'Your email'])}}
                                        </li>
                                        <li class="col-sm-12">
                                            <label>{{Form::label('message','Message')}}</label>
                                                {{Form::textarea('message','', ['class' => 'form-control'])}}
                                        </li>
                                        {{Form::submit('Submit', ['class' => 'btn-round'])}}

                                    </ul>
                                    {!! Form::close() !!}

и мой MessageController @ store выглядит следующим образом:

 public function store(Request $request)
    {
        $this -> validate($request, [
            'name' => 'required',
            'email' => 'required',
            'message' => 'required'
            ]
            );

        $message = new Message();
        $message -> name= $request -> input('name');
        $message -> email= $request -> input('email');
        $message -> text= $request ->input('text');
        $message -> user_id = Auth::user()->id;

        $message->save();

        return redirect('/');
    }

Контроллер просто не работает, потому что даже если я отключу проверку, ничего не произойдет.Понятия не имею, что я делаю не так!

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Ну, прежде всего, убедитесь, что ваш маршрут правильно определен с помощью команды:

php artisan route:list

вы должны увидеть в таблице все маршруты, перечисленные с их именами, маршрутами, контроллерами.Вы должны увидеть шесть маршрутов для Сообщения, один из которых мы ищем сейчас: «message.store»

Я вижу, что вы используете коллектив laravel для визуализации своей формы, вы уверены, что она правильно отрисована?отображает ли элементы DOM правильный маршрут для действия формы и правильные имена для текстовых полей?просто проверьте в своем браузере.

, если нет, попробуйте просто просмотреть блэйд:

<form method="POST" action = "{{ route('message.store') }}">
<!-- include CSRF token as the following -->
@CSRF
@if ($errors->has('name'))
            <span class="invalid-feedback">
        <ul>
            @foreach($errors->get('name') as $error)
            <li>
                {{ $error }}
            </li>
            @endforeach
<input name="name">
@if ($errors->has('name'))
            <span class="invalid-feedback">
        <ul>
            @foreach($errors->get('email') as $error)
            <li>
                {{ $error }}
            </li>
            @endforeach
        </ul>
            </span>
        @endif
<input name="email">
@if ($errors->has('name'))
            <span class="invalid-feedback">
        <ul>
            @foreach($errors->get('message') as $error)
            <li>
                {{ $error }}
            </li>
            @endforeach
        </ul>
            </span>
        @endif
<input name="message">
<submit />
</form>

, затем убедитесь, что почтовый запрос запущен из сети DevTools>.

0 голосов
/ 11 февраля 2019

Вы должны использовать маршрут.

В HTML:

<form method="post" action="{{url('login')}}" accept-charset="UTF-8">

В маршруте / web.php:

Route::post('login','WelcomeController@log_in');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...