Laravel&Alpine.js | 基于PHP条件编写Alpine.js代码的DOM元素
P粉763748806
P粉763748806 2023-08-06 11:54:24
0
1
420

<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学习者快速成长!