开发过程中许多时候都会向公共模板赋值,比如顶部导航栏,页面底部等等,不可能在每个控制器中都赋值一遍。
Laravel 中解决办法如下:
修改
App\Providers\AppServiceProvider
在boot方法中添加
View()->composer('common.header',function ($view){ //common.header 对应Blade模板
$view->with('key', 'value');
});
也可以向所有模板中赋值
View()->share('key', 'value');
view composers 与视图有关,用在一个service provider 的boot()函数里,就是让一个view加载的时候,由于view composer的作用,去调用某个函数传个参啊啥的。
1,创建service provider
php artisan make:provider ComposerServiceProvider
再把ComposerServiceProvider加到config/app.php里面
2,写view composer
public function boot()
{
view()->composer(
'app', //模板名
'App\Http\ViewComposers\MovieComposer' //方法名或者类中的方法
);
}
意思是一旦加载app.blade.php,就执行App\Http\ViewComposers\MovieComposer里的composer函数(这里之所以执行composer函数是默认的),如果你想换一个就
view()->composer('app','App\Http\ViewComposers\MovieComposer@foobar'); //自己定义的方法
这里就执行foobar函数了
在App\Http\ViewComposers\MovieComposer.php里这么写
<?php
namespace App\Http\ViewComposers;
use Illuminate\View\View;//**记得引入这个啊(因为在composer函数参数里使用了View类)**
class MovieComposer
{
public $movieList = [];
public function __construct()
{
$this->movieList = [
'Shawshank redemption',
'Forrest Gump',
];
}
public function compose(View $view)
{
$view->with('latestMovie');
}
}
3,其他
当所有模板都要,用*正则表达式
view()->composer('*', function (View $view) {
//logic goes here
});
想要指定多个view使用,用数组包起来
view()->composer(['nav', 'footer'],'App\Http\ViewComposers\MovieComposer');
或者
view()->composer(['admin.admin'], function ($view){
$column = $this->object_array(DB::table('column')->get());
foreach($column as $k=>$v){
$chid = explode(',',$v['childid']);
foreach($chid as $value){
$column[$k]['chname'][] = $this->object_array(DB::table('column_child')->where('id',$value)->first());
}
}
$view->with('columns',$column);
});
Laravel 是一个功能丰富的框架。但是,你无法从官方文档中找到所有可用的功能。以下是一些你可能不知道的功能。获取原始属性:当修改一条 Eloquent 模型记录的时候你可以通过调用
laravel框架常用目录路径:app_path(),app_path函数返回app目录的绝对路径:$path = app_path();你还可以使用app_path函数为相对于app目录的给定文件生成绝对路径:$path = app_path(\\\'Http/Controllers/Controller.php\\\');
Laravel 的 Illuminate\\\\Database\\\\Eloquent\\\\Model 实现了 JsonSerializable 接口,所以在调用 json_encode 进行序列化时,会调用 Model::jsonSerialize 方法,他这个方法返回的数据是:
如果您需要您的用户支持多文件下载的话,最好的办法是创建一个压缩包并提供下载。看下在 Laravel 中的实现。事实上,这不是关于 Laravel 的,而是和 PHP 的关联更
更新父表的timestamps:如果你想在更新关联表的同时,更新父表的timestamps,你只需要在关联表的model中添加touches属性。
最近在写一个面向国外买家的一个商城项目,既然面向国外,那就要用到PayPal这个支付平台。因为在对接PayPal的过程中遇到了一些问题,花费了一些时间,所以把对接的过程记下来,也希望能帮助到用到PayPal的朋友。我集成的是paypal/rest-api-sdk-php。
Laravel Eloquent 通常返回一个集合作为结果,集合包含很多有用的、功能强大的方法。你可以很方便的对集合进行过滤、修改等操作。本次教程就一起来看一看集合的常用方法及功能。
Laravel 包含各种全局辅助函数。 laravel 中包含大量辅助函数,您可以使用它们来简化开发工作流程。 在这里,我将编写10个最好的 laravel 帮助函数,用于使我的开发更容易。 您必须考虑在必要时使用它们。
有两种方式启用本镜像服务:系统全局配置: 即将配置信息添加到 Composer 的全局配置文件 config.json 中。单个项目配置: 将配置信息添加到某个项目的composer.json 文件中。
一般的项目需求都会要求统一的输出结构,特别是对于api应用而言。因此,如果有beforeResponse的功能,则可以在数据输出之前对response进行统一格式化处理。假设这么一种场景
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!