2015-05-25 61 views
2

我想在button元素寫成onClick屬性的JavaScript函數使用一個變量,但它不工作了使用可變

JavaScript函數我試圖觸發,當用戶點擊在button元素

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

首先,傳遞給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 
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() }}