Laravel по-русски

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

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

#1 10.02.2020 12:48:54

Не выводятся ошибки в views

Редактирую пост, если текст(поле content_raw) маленький ошибки валидации выводятся, если большой не выводятся.

public function up()
    {
        Schema::create('blog_posts', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->bigInteger('category_id')->unsigned();
            $table->bigInteger('user_id')->unsigned();

            $table->string('slug')->unique();
            $table->string('title');

            $table->text('excerpt')->nullable();

            $table->text('content_raw');
            $table->text('content_html');

            $table->boolean('is_published')->default(false);
            $table->timestamp('published_at')->nullable();

            $table->timestamps();
            $table->softDeletes();

            $table->foreign('user_id')->references('id')->on('users');
            $table->foreign('category_id')->references('id')->on('blog_categories');

            $table->index('is_published');
        });
    }
public function rules()
    {
        return [
          'content_raw'=>'',
          'title' => 'required|min:5|max:250',
          'slug'=>'max:250',
          'category_id'=>'required|integer|exists:blog_categories,id',
          'excerpt'=>'string|max:500',
          //'content_raw'=>'required|string|min:5|max:10000',
          'is_published'=>'boolean',
          'published_at'=>'nullable|date',
          'user_id' => 'integer|exists:users,id',
        ];
    }
@if($errors->any())
<div class="row justify-content-center">
  <div class="col-md-11">
    @foreach ($errors->all() as $error)
    <div class="alert alert-danger alert-dismissible fade show" role="alert">
      {{ $error }}
      <button type="button" class="close" data-dismiss="alert" aria-label="Close">
        <span aria-hidden="true">&times;</span>
      </button>
    </div>
    @endforeach
  </div>
</div>
@endif

модель

class BlogPost extends Model
{
    use SoftDeletes;

    protected $fillable = [
      'title',
      'slug',
      'category_id',
      'excerpt',
      'content_raw',
      'is_published',
      'published_at',
      'user_id',
    ];

    /**
   * Категории постов
   *
   * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
   */
   public function category()
   {
     // Статья принадлежит категории
       return $this->BelongsTo(BlogCategory::class);
   }
   /**
  * Автор статьи
  *
  * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
  */
  public function user()
  {
    // Статья принадлежит пользователю
      return $this->BelongsTo(User::class);
  }
}

Непонятно куда копать, валидация срабатывает но ошибки не выводятся, подскажите пожалуйста

Изменено Anton_E (10.02.2020 12:52:34)

Не в сети

#2 10.02.2020 12:50:02

Re: Не выводятся ошибки в views

Модель

class BlogPost extends Model
{
    use SoftDeletes;

    protected $fillable = [
      'title',
      'slug',
      'category_id',
      'excerpt',
      'content_raw',
      'is_published',
      'published_at',
      'user_id',
    ];

    /**
   * Категории постов
   *
   * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
   */
   public function category()
   {
     // Статья принадлежит категории
       return $this->BelongsTo(BlogCategory::class);
   }
   /**
  * Автор статьи
  *
  * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
  */
  public function user()
  {
    // Статья принадлежит пользователю
      return $this->BelongsTo(User::class);
  }
}

Не в сети

#3 10.02.2020 13:11:14

Re: Не выводятся ошибки в views

Возможно проблема в сессии. Ведь туда должны попадать значения "old". У тебя сессия настроена по умолчанию или в БД?

Для БД может пригодиться вот это https://stackoverflow.com/questions/518 … ith-errors

Изменено artoodetoo (10.02.2020 13:18:27)


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#4 10.02.2020 13:47:49

Re: Не выводятся ошибки в views

По умолчанию, а в какую переменную пишется?

Не в сети

#5 10.02.2020 13:58:07

Re: Не выводятся ошибки в views

Я не интересовался в какую. В шаблоне эти переменные доступны обращением к функции old('varname') и находятся они в сессии, инфа 100%.


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#6 10.02.2020 14:06:03

Re: Не выводятся ошибки в views

Если нормально выводит

array:5 [▼
  "_token" => "nY0X9WHlgE0jNt24P4E6QksH3JPxLdKhbn91I2AB"
  "_previous" => array:1 [▶]
  "_flash" => array:2 [▶]
  "_old_input" => array:9 [▶]
  "errors" => Illuminate\Support\ViewErrorBag {#400 ▼
    #bags: array:1 [▼
      "default" => Illuminate\Support\MessageBag {#401 ▼
        #messages: array:1 [▼
          "title" => array:1 [▼
            0 => "The title must be at least 5 characters."
          ]
        ]
        #format: ":message"
      }
    ]
  }
]

И если не нормально

array:3 [▼
  "_token" => "nY0X9WHlgE0jNt24P4E6QksH3JPxLdKhbn91I2AB"
  "_previous" => array:1 [▼
    "url" => "http://blog/admin/blog/posts/96/edit"
  ]
  "_flash" => array:2 [▼
    "old" => []
    "new" => []
  ]
]

Зависит от размера текста

Изменено Anton_E (10.02.2020 14:07:00)

Не в сети

#7 11.02.2020 15:58:09

Re: Не выводятся ошибки в views

Ну подскажите почему пропадают "errors" и "_old_input" и только если текст Поста больше 1024 символа

$id = 1111111;
$item = $this->blogPostRepository->getEdit($id);

        if (empty($item)) {
          $return = \back()
            ->withErrors(['msg'=>"Запись ID=[{$id}] не найдена"])
            ->withInput();
          //dd(session()-all(), $return); //здесь есть а во Вьюхе уже нет!!!!??????
          return $return;

Не в сети

#8 13.02.2020 12:29:22

Re: Не выводятся ошибки в views

Если сессионные переменные теряются, это может означать ситуацию "Headers already set", то есть, где-то происходит неучтённый вывод, какое-то echo-шмэхо. Возможно PHP ругается нотисом или ворнингом. Поэтому оказывается, что кука, а следом и сессия не могут быть установлены!

Смотри внимательно исходный код HTML той страницы, на которую не попадают твои переменные. В браузере вызови контекстное меню и там "View Page Source".

Не в сети

#9 13.02.2020 12:32:52

Re: Не выводятся ошибки в views

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

Не в сети

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