laravel不同设备使用不同的视图
Auth:admin Date:2016-05-28 17:40:00 Cat:技术笔记
使用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
标签:Laravel
上一篇: 放下对技术的执着