我正在建立一个大学管理网站,教授可以登录。
我有一个仪表板,应该在其中放置我动态生成的按钮:(现在它只有虚拟按钮!)
<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'));
}
为了能够在URL中动态生成{subcode}
,我想使用数据$subcodes
在仪表板中创建按钮。控制器将交出$subcodes
方法中的show()
(属于已登录教授的一组学科代码),这些内容将变成按钮。
按钮的名称应为{subcode}
,并且在单击时应在URL中附加与{subcode}
相同的主题代码。
$subcodes
并动态设置按钮? 答案 0 :(得分:0)
<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>
['PID','=', auth()->user()->PID]
中使用PID约束,因此将获得该特定PID的按钮。因此没有问题。答案 1 :(得分:0)
借助Air Petr,我设法找到了解决方案。
显然,您无法嵌套.idx
之类的刀片语法,它会生成错误的php代码。我将Air Petr的解决方案修改为:
{{some_stuff {{ more_stuff }} }}
它完美地生成按钮。一个用户的按钮对另一个用户不可见,因为我在查询中使用了PID约束(['PID','=',auth()-> user()-> PID])。
答案 2 :(得分: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>