php - Laravel中如何使用View::make生成自己的html片段,我生成了一下出错。
阿神
阿神 2017-04-11 09:09:00
[PHP讨论组]

我有个需求是这样的,需要在ServiceProvider里生成一段HTML代码,因为比较长,打算借助View实现。

我在service里执行了以下的代码:

\View::make('admin.messages', ['messageTitle' => $messageTitle, 'messageBody' => $messageBody, 'messageType' => $messageType]);

或者加上 render

\View::make('admin.messages', ['messageTitle' => $messageTitle, 'messageBody' => $messageBody, 'messageType' => $messageType])->render();

此service会在controller里执行,

执行的时候报错了,报的错是找不到某个变量,但是这个变量是controller里的view('*')加载的视图中的变量,在admin.messages是没有的。

所以我认为我的用法可能不对,希望大家帮我看看原因。

或者是有什么其它思路生成一段html代码不。

P.S. 我的原始需求是打算执行完某个动作时记住执行结果的提示信息到flash session,当redirect到新页面后,读出并且给个提示,因为这段提示涉及到的html代码有点长,所以有以上打算。

阿神
阿神

闭关修行中......

全部回复(1)
阿神

没找到该问题的原因所在。
找了个其它方式实现。
编写了个service 由service Provider调用
这个service有两个方法,一个负责在controller里调用存入操作结果信息到flash session。这里没什么说的。
另一个方法主要是读出数据并return,关键是我用了view端的inject,具体代码如下:

@inject('messageAlert', 'App\Services\Common\MessageAlert')
@if(($message=$messageAlert->getAlert())!==false)
    <p class="row">
        <p class="col-md-12"><!--danger,info,warning,success-->
            <p class="auto-close callout callout-{{$message['messageType']}}">
                <h4>{{$message['messageTitle']}}</h4>

                <p>{{$message['messageBody']}}</p>
            </p>
        </p>
    </p>
@endif

这样在操作的controller里存好信息并转到新的controller并加载了view时,在view里include一下这个view即可。其中AppServicesCommonMessageAlert是上文提到的service

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号