Laravel по-русски

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

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

#26 31.07.2017 06:02:03

Re: Ошибка TokenMismatchException in VerifyCsrfToken.php line 68:

Может без контроллера нельзя отправлять данные POST

нет, причина в том что без шаблона нельзя в форму вставить CSRF-токен. то есть конечно можно, но для этого нужны манипуляции с формой на джаваскприте, которые ещё сложнее, чем просто нормально вывести страницу с формой через обработчик.

просто не выводи формы через html, а сделай маршрут с формой, в нём return view('forma') а в шаблоне resources/views/forma.blade.php вставь код своей формы и вызов csrf_field()

Не в сети

#27 31.07.2017 20:58:36

Re: Ошибка TokenMismatchException in VerifyCsrfToken.php line 68:

Пишу для тех кто тоже занимается по видеоурокам и столкнулся с такой же проблемой.
Необходимо создать 2 rout в файле web.php

PHP
Route::get('/comments',function (){
    return 
view('form');
});
Route::post('/comments',function (){
    
print_r($_POST);
});

1-ый ведет на форму, которую необходимо поместить в resources/views/form.blade.php
2-ой обрабатывает саму форму.
Да, ошибка выскакивает именно из-за не использования csrf_field().
форму в файле resources/views/form.blade.php
писать так:

PHP
<form action="/comments" method="POST">
    {{ 
csrf_field() }}
    
Имя:
    <
input type="text" name="name"><br/>
    
Комментарий:<br/>
    <
textarea name="text" id="text" cols="30" rows="10"></textarea>
    <!--<
input type="hidden" name="_method" value="PUT">-->
    <
br/>
    <
input type="submit" value="Добавить">
</
form>

Может кому-нить поможет.

Не в сети

#28 23.10.2019 17:02:11

Re: Ошибка TokenMismatchException in VerifyCsrfToken.php line 68:

Версия  Laravel Framework 5.4.36
Версия PHP 7.1.22
Windows 7 x64

Просто мистика какая-то. Вчера все было ок. Хотя, не совсем, редко, но появлялась ошибка  Ошибка TokenMismatchException in VerifyCsrfToken.php line 68 и как у Vladimir_user после обновления страницы все становилось ок. Сегодня, при нажатии кнопки в любой форме любого вида любой модели появляется эта ошибка! sad

Куки включены, мета тег в шапке html файла есть, подключен Collective\Html\HtmlServiceProvider и он генерирует токен в форме в виде скрытого input, прописывал даже {{ csrf_field() }}, в просмотре кода видно что есть два поля

<input name="_token" type="hidden" value="7Sy8yPBr2ECAVKFtgMpYNZurYi4hv5tz3RM4d3aU">

Не помогло и исключить URI из-под CSRF-защиты


Вид (создание категории)

<div class="box">
          {!! Form::open(['route' => 'categories.store']) !!}
          {{ csrf_field() }}
          <div class="box-header with-border">
            <h3 class="box-title">Добавить новую категорию</h3>
          </div>
          
          @include('admin.errors')
          
          <div class="box-body">
            <div class="col-md-6">
              <div class="form-group">
                <label for="exampleInputEmail1">Название</label>
                <input type="text" class="form-control" id="exampleInputEmail1" placeholder="" name="title" value="{{old('title')}}">
              </div>
            </div>
          </div>
          <!-- /.box-body -->
          <div class="box-footer box-footer-border-top">
          <!--  <button class="btn btn-default">Назад</button>-->
            <button class="btn btn-success pull-right">Добавить</button>
          </div>
          <!-- /.box-footer-->
          
          {!! Form::close() !!}
      </div>

Роуты

Route::post('admin/products/create', 'Admin\ProductsController@list')->name('products.list');  

Route::group(['prefix'=>'admin', 'namespace' => 'Admin'], function(){
	Route::get('/', 'DashBoardController@index');
	Route::resource('/categories', 'CategoriesController');
	Route::resource('/subcategories', 'SubcategoriesController');
	Route::resource('/tags', 'TagsController');
	//Route::resource('/users', 'UsersController');
	Route::resource('/products', 'ProductsController');
	Route::resource('/brands', 'BrandsController');
    Route::resource('/linemodels', 'LineModelsController');
});

Модель

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Cviebrock\EloquentSluggable\Sluggable;

class Category extends Model
{

    use Sluggable;

    protected $fillable = ['title'];

    public function products()
    {
        return $this->hasMany(Product::class);
    }

    public function subcategories()
    {
        return $this->hasMany(SubCategory::class);
    }

    public function brands()
    {
        return $this->hasMany(Brand::class);
    }

    public function linemodel()
    {
        return $this->hasMany(Linemodel::class);
    }

    public function sluggable()
    {
        return [
            'slug'=> [
                'source'=>'title'
            ]
        ];
    }
}

Контроллер

<?php

namespace App\Http\Controllers\Admin;


use Validator;
use App\Category;
use App\Http\Controllers\Controller;
use App\Http\Requests\CategoryRequest;
use Illuminate\Http\Request;
use Illuminate\Foundation\Http\FormRequest;


class CategoriesController extends Controller
{
    public function index()
    {
        $categories = Category::all();
    	return view('admin.categories.index', 
            [
                'categories' => $categories,
            ]);
    }

    public function create()
    {
        return view('admin.categories.create');
    }

    //public function store(Request $request)
    public function store(CategoryRequest $request)
    {

    	return redirect()->route('categories.create');
    }

    public function edit($id)
    {
    	$category = Category::find($id);

        return view('admin.categories.edit', [
            'category' => $category,
        ]);
    }

    public function update(CategoryRequest $request, $id)
    {
    	$category = Category::find($id);
    	$category->update($request->all());

    	return redirect()->route('categories.index');
    }

    public function destroy($id)
    {
        $category = Category::find($id);
       
        if($category->subcategories->isEmpty())
        {
            $category->delete();
            return redirect()->route('categories.index');
        }
        return redirect()->route('categories.index')->with('message','Нельзя удалить! Категория ' . $category->title . '  содержит подкатегории!');
    }
}

Прошу помощи. Если есть необходимость, могу выставить на диск весь проект.

Не в сети

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