0

我正在制作一个教授可以登录的大学管理网站。

我有一个仪表板,应该放置我的动态生成的按钮:(现在它只有虚拟按钮!)

仪表板 由这个视图文件生成,我将很快对其进行修改:

<div class="container d-flex flex-column align-items-center justify-content-center">
<h1>IA DASHBOARD</h1>
<br>
    <div class="grid2">
            <a href="{{ url('/subcode/{subcode}') }}" ><button class="btn btn-outline-primary btn-custom-outline-primary btn-custom">SUBCODE 1</button></a>
            <a href="{{ url('/subcode/{subcode}') }}" ><button class="btn btn-outline-primary btn-custom-outline-primary btn-custom">SUBCODE 2</button></a>
            <a href="{{ url('/subcode/{subcode}') }}" ><button class="btn btn-outline-primary btn-custom-outline-primary btn-custom">SUBCODE 3</button></a>
        </div>


数据库中的表:

  • 该表iamarks包含将显示的数据(学生信息和分数)/subcode/{subcode}缩小为仅分配给当前登录教授的班级中的学生的记录。
  • classroom_mappers是用于将教授映射到具有主题的教室的表格。它确保一个教室只有一位教授特定学科。

当前在我的web.php中的路线:

route::get('/ia', 'IAController@show')->middleware('auth');
Route::get('/subcode/{subcode}', 'IAController@showTable')->middleware('auth');

...这些是我的控制器内部的方法:

//shows buttons to the user:
public function show(){
    $subcodes = DB::table('classroom_mappers')
                    ->select('subcode')
                    ->where([['PID','=', auth()->user()->PID]])
                    ->get();
    return view('ia',compact('subcodes'));
}

//when user clicks a button, subcode is to be generated and a table is to be shown:
//it works, I tried it by manually typing in subcode value in URL.

public function showTable($subcode){
    $sem = DB::table('classroom_mappers')
               ->where([['PID','=', auth()->user()->PID],
                        ['subcode','=',$subcode]])
               ->pluck('semester');
    $division = DB::table('classroom_mappers')
                    ->where([['PID','=', auth()->user()->PID],
                             ['semester','=',$sem],
                             ['subcode','=',$subcode]])
                    ->pluck('division');
    $data = DB::table('iamarks')
                ->where([['semester','=',$sem],
                         ['division','=',$division],
                         ['subcode','=',$subcode]])
                ->get();

    return view('subcode',compact('data'));
}


我的问题:

为了能够{subcode}在 URL 中动态生成,我想使用数据在仪表板中创建按钮$subcodes。控制器移交$subcodes(一组属于已登录教授的主题代码),这些代码将由该方法制成按钮show()

按钮应具有名称{subcode},单击时应在 URL 中附加与{subcode}.

  1. 如何$subcodes动态使用和制作按钮?
  2. 如何确保为一个用户制作的按钮对另一个用户不可见?
4

3 回答 3

0

感谢 Air Petr,我设法找到了解决方案。

显然,您不能嵌套刀片语法{{some_stuff {{ more_stuff }} }},它会生成错误的 php 代码。我将 Air Petr 的解决方案修改为:

<div class="grid2">
    @foreach ($subcodes as $subcode)
        <a href="<?php echo e(url('/subcode/'.$subcode->subcode));?>">
            <button class="btn btn-outline-primary btn-custom-outline-primary btn-custom">
                <?php
                    echo e($subcode->subcode);
                ?>
            </button>
        </a>
    @endforeach
</div>

它完美地生成了按钮。一个用户的按钮对另一个用户不可见,因为我在查询中使用了 PID 约束(['PID','=', auth()->user()->PID])。

于 2019-03-28T06:43:41.170 回答
0
  1. 您可以循环代码来创建按钮。像这样的东西(它用于“刀片”模板引擎):
<div class="grid2">
    @foreach ($subcodes as $subcode)
        <a href="{{ url('/subcode/'.$subcode->subcode) }}" ><button class="btn btn-outline-primary btn-custom-outline-primary btn-custom">{{ $subcode->subcode }}</button></a>
    @endforeach
</div>
  1. 由于您在查询 ( ['PID','=', auth()->user()->PID]) 中使用 PID 约束,因此您将获得该特定 PID 的按钮。所以没有问题。
于 2019-03-27T20:11:44.963 回答
0

传递密码数组以查看:

$subcodes = []; // Array retrieved from DB
return view('subcode', compact('subcodes'));

在 中subcode.blade.php,循环遍历每个子代码:

<div class="grid2">
  @foreach($subcodes as $subcode)
  <a href="{{ url('/subcode/' . $subcode->subcode) }}">
    <button class="btn btn-outline-primary btn-custom-outline-primary btn-custom">SUBCODE {{ $subcode->subcode }}</button>
  </a>
  @endforeach
</div>
于 2019-03-28T07:00:32.467 回答