Laravel 5 — исключение TokenMismatchException в VerifyCsrfToken.php

Я создал простую форму PUT для своего сайта (также у меня есть формы GET и POST, которые отлично работают).

<h1>Edit {!! $brands->brand_name !!}</h1>

    <!-- if there are creation errors, they will show here -->
    {!! Html::ul($errors->all()) !!}

    {!! Form::model($brands, array('route' => array('brands.update', $brands->id), 'method' => 'PUT', 'files' => true)) !!}

    <div class="form-group">
        {!! Form::label('brand_name', 'Name') !!}
        {!! Form::text('brand_name', null, array('class' => 'form-control')) !!}
    </div>

    <div class="form-group">
        {!! Form::label('brand_name_rus', 'Name_rus') !!}
        {!! Form::text('brand_name_rus', Input::old('brand_name_rus'), array('class' => 'form-control')) !!}
    </div>

    <div class="form-group">
        {!! Form::label('Your image') !!}
        <img src="http://parasha.dev/{{ $brands->img_brand_path }}"/>
    </div>

    <div class="form-group">
        {!! Form::label('img_brand_path', 'New image') !!}
        {!! Form::file('img_brand_path') !!}
    </div>

    {!! Form::submit('Edit the Brand!', array('class' => 'btn btn-primary')) !!}

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

Также я использую Clip Two Theme в качестве макета моей панели администратора, которая включает эти формы. И когда я использую оба (макет и мои формы, это дает мне ошибку -> TokenMismatchException в VerifyCsrfToken.php). Итак, эта тема начальной загрузки каким-то образом вызывает эту ошибку.

Итак, у меня есть два вопроса. Во-первых, как я могу решить эту проблему. И второе, могу ли я создать форму laravel без автосоздания токена? Извините за мой английский)


person Andrii Pryimak    schedule 16.05.2016    source источник


Ответы (2)


Похоже, вы не включаете csrf_token в свою форму.

Добавьте {!! csrf_field() !!} в свою форму. Если вы используете запросы ajax, вы можете поместить {!! csrf_field() !!} в шаблон «мастер» и указать его в заголовке ajax следующим образом:

$.ajaxSetup({
headers: { 'X-CSRF-Token' : $('meta[name=_token]').attr('content')}
});
person bi4nchi    schedule 16.05.2016
comment
Эта строка создает значение моего токена. И в инспекторе я нашел это значение. {!! Form::model($brands, array('route' => array('brands.update', $brands->id), 'method' => 'PUT', 'files' => true)) !!} Проблема не в форме, моя тема начальной загрузки вызывает эту ошибку! - person Andrii Pryimak; 16.05.2016

Это тоже работает:

{!! Form::token() !!}
person Piya Desai    schedule 17.05.2016