Laravel PHP 表单提交,显示结果时打断文本?
Laravel PHP form submition, breaks text when displaying results?
所以我有一个待办事项列表和一个非常奇怪的问题。
所以我有一个表单,用户可以在其中编写标题和任务描述,任务描述作为文本区域完成,之后用户按下提交按钮并提交任务,然后将用户重定向到“主页”和显示所有待处理的任务。
问题是当用户在 texarea 中按下“ENTER”时,文本“中断”并且不与 HTML div 标签对齐。(如下图所示(TASK 3 和任务 2))
这是我的“显示所有任务”代码
> @foreach ($tasks as $task)
> <div class="Task">
> <h1>{{ $task->TaskName }}</h1>
> <div class="TaskDescription">
> <p>{{ $task->TaskDescription }}</p>
> </div>
> </div>
> @endforeach
,这是我的“创建新任务”表单
<div class="FormContainer">
<form method="POST" action="/tasks" class="form_group_vertical">
@csrf
<input name="TaskName" placeholder="Task name..." class="lineInput">
<textarea name="TaskDescription" placeholder="Task description..." class="Form_TextArea"></textarea>
<button class="btn_submit" type="submit">Create new Task</button>
</form>
这就是我存储所有任务的方式
public function storeTasks(){
// return request()->all(); data displayed in JSON
Task::create([
'TaskName' => request('TaskName'),
'TaskDescription' => request('TaskDescription')
]);
return redirect('/tasks');
}
这是我的向上迁移函数
public function up()
{
Schema::create('tasks', function (Blueprint $table) {
$table->id();
$table->string('TaskName');
$table->text('TaskDescription');
$table->timestamps();
});
}
到目前为止我已经尝试过,改变数据的保存方式,
尝试将 {{ }} 替换为 {!! !!},尝试更改数据库,并尝试完全重写表单 - 我找不到任何修复此方法的方法。
使用nl2br
@foreach ($tasks as $task)
<div class="Task">
<h1>{{ $task->TaskName }}</h1>
<div class="TaskDescription">
<!-- Change here -->
<p>{!! nl2br(trim($task->TaskDescription)) !!}</p>
<!-- OR -->
<p>{!! str_replace(array("\r\n", "\r", "\n"), "<br />", $task->TaskDescription) !!}</p>
</div>
</div>
@endforeach
解决方案 !!!
为了解决我的问题,我必须替换 $table->text('TaskDescription') 并将其更改为 $table->longText('TaskDescription')
用长文本替换文本
public function up()
{
Schema::create('tasks', function (Blueprint $table) {
$table->id();
$table->string('TaskName');
$table->longText('TaskDescription');
$table->timestamps();
});
}
在 <pre>
内设置文本区域也可以。
所以我有一个待办事项列表和一个非常奇怪的问题。
所以我有一个表单,用户可以在其中编写标题和任务描述,任务描述作为文本区域完成,之后用户按下提交按钮并提交任务,然后将用户重定向到“主页”和显示所有待处理的任务。
问题是当用户在 texarea 中按下“ENTER”时,文本“中断”并且不与 HTML div 标签对齐。(如下图所示(TASK 3 和任务 2))
这是我的“显示所有任务”代码
> @foreach ($tasks as $task)
> <div class="Task">
> <h1>{{ $task->TaskName }}</h1>
> <div class="TaskDescription">
> <p>{{ $task->TaskDescription }}</p>
> </div>
> </div>
> @endforeach
,这是我的“创建新任务”表单
<div class="FormContainer">
<form method="POST" action="/tasks" class="form_group_vertical">
@csrf
<input name="TaskName" placeholder="Task name..." class="lineInput">
<textarea name="TaskDescription" placeholder="Task description..." class="Form_TextArea"></textarea>
<button class="btn_submit" type="submit">Create new Task</button>
</form>
这就是我存储所有任务的方式
public function storeTasks(){
// return request()->all(); data displayed in JSON
Task::create([
'TaskName' => request('TaskName'),
'TaskDescription' => request('TaskDescription')
]);
return redirect('/tasks');
}
这是我的向上迁移函数
public function up()
{
Schema::create('tasks', function (Blueprint $table) {
$table->id();
$table->string('TaskName');
$table->text('TaskDescription');
$table->timestamps();
});
}
到目前为止我已经尝试过,改变数据的保存方式, 尝试将 {{ }} 替换为 {!! !!},尝试更改数据库,并尝试完全重写表单 - 我找不到任何修复此方法的方法。
使用nl2br
@foreach ($tasks as $task)
<div class="Task">
<h1>{{ $task->TaskName }}</h1>
<div class="TaskDescription">
<!-- Change here -->
<p>{!! nl2br(trim($task->TaskDescription)) !!}</p>
<!-- OR -->
<p>{!! str_replace(array("\r\n", "\r", "\n"), "<br />", $task->TaskDescription) !!}</p>
</div>
</div>
@endforeach
解决方案 !!!
为了解决我的问题,我必须替换 $table->text('TaskDescription') 并将其更改为 $table->longText('TaskDescription')
用长文本替换文本
public function up()
{
Schema::create('tasks', function (Blueprint $table) {
$table->id();
$table->string('TaskName');
$table->longText('TaskDescription');
$table->timestamps();
});
}
在 <pre>
内设置文本区域也可以。