我想調用一個函數,並且此函數將在我的視圖上創建select option
元素。例如:laravel創建具有不同數據的select元素
{{ select_option($users, $key = 'id', $value = 'name') }}
這是我select_option
將包括html
1解決方案
MyHelper.php
function select_option($datas, $key, $value) {
$html = '<select>';
foreach ($datas as $data) {
$html .= "<option key='{$data->$key}'>{$data->$value}</option>"
}
$html .= '</select>';
return $html;
}
編輯使用刀片模板
我知道我應該使用刀片模板,但我需要自己傳遞數據。我只想調用一個函數。
function select_option($datas, $key, $value) {
return view(
'select_option',
['datas' => $datas ?? []]
)->render();
}
但我認爲這很奇怪,因爲我使用PHP來創建HTML元素。
2溶液演示
2-1通數據,以演示者
我必須從控制器獲取數據。但我想調用一個函數並立即獲取數據。
@inject('SelectOption', 'App\Presenter\SelectOption')
{!!$SelectOption->getData($datas)!!}
的getData
public functin getData($datas) {
// foreach to create select option element
return $html
}
2-2主持人將調用服務來獲取數據
我認爲主持人的呼叫服務是怪異了。我不確定渲染時間會增加。
@inject('SelectOption', 'App\Presenter\SelectOption')
{!!$SelectOption->getData()!!}
的getData
public function __construct(MyServices $my_services)
{
$this->my_services = $my_services;
}
public functin getData() {
$datas = $this->my_services->getData();
// foreach to create select option element
return $html
}
你有什麼建議嗎?謝謝。
您使用的刀?你可以在刀片視圖中使用@foreach –
我知道我可以使用'@ foreach',但是如果我有很多'select option',我需要寫很多'@ foreach'。我想省略它。並通過自動生成'select option'創建一個獲取數據的函數。 – lighter
更好的是你爲選擇創建單獨的刀片模板,包括 – iCoders