在 laravel blade 的表单字段中使用变量
Using variable in form fields of laravel blade
我正在尝试在 javascript 函数中使用一个变量,写为 button
元素中的 onClick
属性,但没有成功
我试图在用户点击 button
元素时触发的 javascript 函数
updateForm(variableHere);
变量是 $dealer->id
这就是我想要做的
@if ($dealer->user->activated==true)
{{ sprintf(Form::button('%s', ['class' => 'edit', 'style' => 'border: none; background: none; padding: 0px;', 'onClick' => 'updateForm(%s)']),'<i class="fa fa-eye-slash"></i>', '{{{ $dealer->id }}}') }}
@endif
{{ Form::open(['route' => ['dealers.status', $dealer->id], 'id' => 'update-status-'.$dealer->id ]) }}
{{ Form::close() }}
但是当我检查元素的源代码时得到这个
<button fa-eye-slash"="" fa="" onclick="updateForm(<i class=" style="border: none; background: none; padding: 0px;" class="edit">)" type="button"><!--?php echo e($dealer--->id); ?></button>
我做错了什么?
我刚找到一个解决方案,感觉很蠢
我可以像这样简单地使用它 updateForm('.$dealer->id.')
而不是在 updateForm()
上调用 sprintf 函数
所以我只需要把它改成这个
@if ($dealer->user->activated==true)
{{ sprintf(Form::button('%s', ['class' => 'edit', 'style' => 'border: none; background: none; padding: 0px;', 'onClick' => 'updateForm('.$dealer->id.')']),'<i class="fa fa-eye-slash"></i>') }}
@endif
{{ Form::open(['route' => ['dealers.status', $dealer->id], 'id' => 'update-status-'.$dealer->id ]) }}
{{ Form::close() }}
首先,传给sprintf
的数据是倒过来的。由于用于填充属性的数据先于放置到按钮元素的数据,因此您需要切换第二个和第三个参数。
其次,尝试像这样传递经销商变量实际上会打印出 PHP 代码,而不是执行它,因此您需要摆脱围绕它的 blade 语法.
第三,我认为更好的方法是使用 HTML::decode()
方法,而不是 sprintf
:
@if ($dealer->user->activated==true)
{{ HTML::decode(Form::button('<i class="fa fa-eye-slash"></i>', ['class' => 'edit', 'style' => 'border: none; background: none; padding: 0px;', 'onClick' => 'updateForm('.$dealer->id.')'])) }}
@endif
我正在尝试在 javascript 函数中使用一个变量,写为 button
元素中的 onClick
属性,但没有成功
我试图在用户点击 button
元素时触发的 javascript 函数
updateForm(variableHere);
变量是 $dealer->id
这就是我想要做的
@if ($dealer->user->activated==true)
{{ sprintf(Form::button('%s', ['class' => 'edit', 'style' => 'border: none; background: none; padding: 0px;', 'onClick' => 'updateForm(%s)']),'<i class="fa fa-eye-slash"></i>', '{{{ $dealer->id }}}') }}
@endif
{{ Form::open(['route' => ['dealers.status', $dealer->id], 'id' => 'update-status-'.$dealer->id ]) }}
{{ Form::close() }}
但是当我检查元素的源代码时得到这个
<button fa-eye-slash"="" fa="" onclick="updateForm(<i class=" style="border: none; background: none; padding: 0px;" class="edit">)" type="button"><!--?php echo e($dealer--->id); ?></button>
我做错了什么?
我刚找到一个解决方案,感觉很蠢
我可以像这样简单地使用它 updateForm('.$dealer->id.')
而不是在 updateForm()
所以我只需要把它改成这个
@if ($dealer->user->activated==true)
{{ sprintf(Form::button('%s', ['class' => 'edit', 'style' => 'border: none; background: none; padding: 0px;', 'onClick' => 'updateForm('.$dealer->id.')']),'<i class="fa fa-eye-slash"></i>') }}
@endif
{{ Form::open(['route' => ['dealers.status', $dealer->id], 'id' => 'update-status-'.$dealer->id ]) }}
{{ Form::close() }}
首先,传给sprintf
的数据是倒过来的。由于用于填充属性的数据先于放置到按钮元素的数据,因此您需要切换第二个和第三个参数。
其次,尝试像这样传递经销商变量实际上会打印出 PHP 代码,而不是执行它,因此您需要摆脱围绕它的 blade 语法.
第三,我认为更好的方法是使用 HTML::decode()
方法,而不是 sprintf
:
@if ($dealer->user->activated==true)
{{ HTML::decode(Form::button('<i class="fa fa-eye-slash"></i>', ['class' => 'edit', 'style' => 'border: none; background: none; padding: 0px;', 'onClick' => 'updateForm('.$dealer->id.')'])) }}
@endif