Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Редактирую пост, если текст(поле 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">×</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)
Не в сети
Модель
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);
}
}
Не в сети
Возможно проблема в сессии. Ведь туда должны попадать значения "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.
Не в сети
По умолчанию, а в какую переменную пишется?
Не в сети
Я не интересовался в какую. В шаблоне эти переменные доступны обращением к функции old('varname') и находятся они в сессии, инфа 100%.
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Если нормально выводит
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)
Не в сети
Ну подскажите почему пропадают "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;
Не в сети
Если сессионные переменные теряются, это может означать ситуацию "Headers already set", то есть, где-то происходит неучтённый вывод, какое-то echo-шмэхо. Возможно PHP ругается нотисом или ворнингом. Поэтому оказывается, что кука, а следом и сессия не могут быть установлены!
Смотри внимательно исходный код HTML той страницы, на которую не попадают твои переменные. В браузере вызови контекстное меню и там "View Page Source".
Не в сети
То есть я предполагаю, что большой размер текста приводит к возникновению ошибки. Я не знаю к какой именно. Но эта ошибка тобой не ловится, а тупо выводится и мешает установке заголовков, т.е. сессионная кука не передаётся в следующий запрос.
Не в сети
Страницы 1