0

使用 Laravel 6,我想在视图中动态显示页面标题(“新”或“更新”)。但是,始终显示“创建学校”。当我调试时,$school->id 不包含“新”(而是一个 UUID)。这是呈现动态标题的最佳方式吗?

@section('title', $school->id === 'new' ? 'Create school' : 'Update school')

控制器

<?php

public function create()
{
    $school = new School();
    $school->id = 'new';
    $school->country_id = 'FR';
    
    return view('/school/form', ['school' => $school]);
}

public function edit(School $school)
{
    return view('/school/form', ['school' => $school]);
}

当我返回视图(创建和编辑的视图相同)时,我发送的是空学校或学校。在视图中,我想仅通过测试显示“新”或“更新”$school->id.

4

4 回答 4

1

像下面那样做

@section('title)

    {{ $school->id === 'new' ? 'Create school' : 'Update school' }}

@stop
@section('othersection)
@endsection

在你的控制器中,create 我猜你需要调用save()方法。也许您需要取决于您是否需要。我只想提

于 2019-09-06T10:16:41.027 回答
0

我不认为您实际上是在创建一所新学校,因为您正在创建一个新的学校实例但您没有保存它 - 因此 ID 是唯一生成的 UUID 并且它没有被“新”覆盖.

public function create()
{
    $school = new School();
    $school->id = 'new';
    $school->country_id = 'FR';

    $school->save(); // add in this line

    return view('/school/form', ['school' => $school]);
}

你有学校的唯一标识符吗?拥有一个实际的唯一 ID 而不是“新的”可能会很有用——不过只是一个建议。

于 2019-09-06T10:37:16.863 回答
0

我明白发生了什么,是我混淆了我的 IDE 中的视图。一切正常,无论是$scholl->id对 null,对 'new' 还是其他。

于 2019-09-06T10:57:00.003 回答
0

你可以使用isset()函数。尝试创建该案例时不需要传递$school变量

@section('title', isset($school) ? 'Create school' : 'Update school')

在控制器中

public function create()
{
    return view('/school/form');
}

public function edit(School $school)
{
    return view('/school/form', ['school' => $school]);
}

编辑: 试试这个

@php
    $title = isset($school) ? 'Create school' : 'Update school';
    // or other logic
@endphp
@section('title', $title)
于 2019-09-06T09:57:19.757 回答