首页 > 解决方案 > 如何使用 PHP 和 Laravel 使视图文件中的代码更清晰?

问题描述

我试图使用 PHP 和 Laravel 显示 MySQL 数据库的结果。

这是我的控制器代码

public function index()
{
    $assessments = DB::table('assessments')
        ->join('questions', 'questions.assessment_id', '=', 'assessments.id')
        ->join('answers', 'answers.question_id', '=', 'questions.id')
        ->select('*')
        ->get();

    return view('assessment_submission.index', ['resultSQL' => $assessments]);
}

控制器代码为我工作。下面的代码是我的看法:

@foreach($resultSQL as $row)
    <div class="card" style="">
        <div class="card-body">
            <h5 class="card-title">{!! $row->assesment_name !!}</h5>
            <h5 class="card-title">{!! $row->question !!}</h5>
            <h5 class="card-title">{!! $row->answer !!}</h5>
        </div>
    </div>
@endforeach

但是我需要使用此代码创建一个选择元素,并且我稍微更改了代码以便能够做到这一点。

所以,我修改了控制器:

public function index()
{
    $assessments = DB::table('assessments')
        ->join('questions', 'questions.assessment_id', '=', 'assessments.id')
        ->join('answers', 'answers.question_id', '=', 'questions.id')
        //->join('answers')
        ->select('*')
        ->get();

    $resultado_json = json_decode(json_encode($assessments), true);
    $resultado_em_pedacos = array_chunk($resultado_json, 4);

    return view('assessment_submission.index', ['resultSQL' => $assessments, 'resultado_em_pedacos' => $resultado_em_pedacos ]);
}

我更改了显示结果的视图部分:

@for ($i = 0; $i < count($resultado_em_pedacos); $i++)
    <p>
        {!! $resultado_em_pedacos[$i][0]["question_content"] !!}
        <select name="{{$i}}" id="{{$i}}">
        @for ($j = 0; $j < count($resultado_em_pedacos[0]); $j++)
                <option value="volvo">{!! $resultado_em_pedacos[$i][$j]["answer_text"] !!}</option>
        @endfor
        </select>
    </p>
@endfor

所有代码都在工作,但我认为视图文件(index.blade.php)不干净。

我怎样才能使这段代码更干净?

标签: phplaraveleloquent

解决方案


如果您整理缩进并foreach改为使用,您的视图代码将变得更具可读性。

@foreach ($resultado_em_pedacos as $resultado_em_pedaco)
    <p>
        {!! $resultado_em_pedaco[0]["question_content"] !!}

        <select name="{{$i}}" id="{{$i}}">
            @foreach ($resultado_em_pedaco as $resultado)
                <option value="volvo">
                    {!! $resultado["answer_text"] !!}
                </option>
            @endforeach
        </select>
    </p>
@endforeach

我使用的变量名可能不正确,我不会说西班牙语。


推荐阅读