使用composer添加第三方库jenssegers/agent
composer require jenssegers/agent
然后在app/config/app.php 里的服务提供者数组里添加该库, 并添加别名
'providers' => [
Jenssegers\Agent\AgentServiceProvider::class,
]
'aliases' => [
'Agent' => Jenssegers\Agent\Facades\Agent::class,
]
使用artisan创建一个服务提供者类php artisan make:provider ResponseMacroServiceProvider
同样要在app.php里面配置
'providers' => [
App\Providers\ResponseMacroServiceProvider::class,
]
// 别名用不到,不用配置了
修改app/Providers/ResponseMacroServiceProvider.php
的boot
方法
public function boot(ResponseFactory $factory)
{
$factory->macro('ress', function ($viewname) use ($factory) {
if ( Agent::isMobile() ) {
return view()->make($viewname . "_mobile");
} else {
return view()->make($viewname . "_web");
}
});
}
在Controller中可以这样使用
class HomeController extends Controller
{
public function index()
{
return response()->ress('home.index');
//return view('home.index');
}
public function article()
{
return response()->ress('home.article');
}
}
最后就是把视图名改为 _web.blade.php 和 _mobile.blade.php
本文为“技术点滴”的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。