Laravel&Alpine.js | 基於PHP條件編寫Alpine.js程式碼的DOM元素
P粉763748806
P粉763748806 2023-08-06 11:54:24
0
1
481

<p>這個 updateSoftwareRequest 在錯誤時回傳這些資料:</p> <pre class="brush:php;toolbar:false;">    public function after(): array    {        return [            function (Validator $validator) {                if($validator->failed()) {                    $validator->errors()->add('model', $this->route('software'));                    session(['showUpdateSoftwareModal', true]);                }            }        ];    } </pre> <p>我希望這個 span 根據會話值取得一個 x-init。我正在嘗試這樣實作:</p> <pre class="brush:html;toolbar:false;">    <span x-data="{}" x-on:click="$dispatch('open-modal', 'edit-software-modal ')" data-type="edit" {{ session('showUpdateSoftwareModal') === true ? 'x-init="console.log('HI')"' : '' }}>Edit</span> ; </pre> <p>但當值為 true 時,x-init 不會觸發寫入。有人可以幫忙嗎? <br /><br />編輯:剛剛在文件中找到了這個:<br /><br />您可以將x-init 添加到x-data HTML 區塊內部或外部的任何元素中。例如:<br /><br />有人知道其他解決方案嗎?我正在嘗試重新觸發一個編輯模態框,其中模態框內的字段從點擊按鈕的父 td 上的資料屬性中獲取。錯誤觸發來自一個表單請求,我正在嘗試觸發特定行的按鈕。 </p>

P粉763748806
P粉763748806

全部回覆(1)
P粉350036783

似乎引號有問題,因為它們被blade的{{ }}轉義了,所以應該改為:

{{ session('showUpdateSoftwareModal') === true ? 'x-init="console.log(\'HI\')"' : '' }}

可以用:

{!! session('showUpdateSoftwareModal') === true ? 'x-init="console.log(\'HI\')"' : '' !!}

但我建議您採用不同的方法:

<span x-data="{myFlag: {{ (int)session('showUpdateSoftwareModal', false) }} }"
      @click="$dispatch('open-modal', 'edit-software-modal')"
      data-type="edit"
      x-init="if (myFlag) {console.log('HI')}"
>
  Edit
</span>

這樣您可以在Alpine物件的任何地方使用myFlag。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!