在laravel刀片的形式领域中使用变量

时间:2015-05-25 04:27:49

标签: javascript php jquery laravel blade

我正在尝试在onClick元素中用button属性编写的javascript函数中使用变量,但它没有用完

我试图在用户点击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(&lt;i class=" style="border: none; background: none; padding: 0px;" class="edit">)" type="button"&gt;<!--?php echo e($dealer--->id); ?&gt;</button>

我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

首先,传递给sprintf的数据是向后的。由于用于填充属性的数据位于要放入按钮元素的数据之前,因此您需要切换第二个和第三个参数。

其次,试图传递像这样的经销商变量实际上会打印出PHP代码,而不是执行它,所以你需要摆脱围绕它的刀片语法。

第三,我认为更好的做法是使用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

答案 1 :(得分:0)

我刚刚找到了一个解决方案,感觉就像傻瓜

我可以像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() }}