像 Discuz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 这种实现主题切换的功能怎么实现的?

laravel 有类型好用的库吗?这种功能有啥好的思路?

by JeffreyBool blog :point_right: link
JeffreyBool
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
Summer
最佳答案

如果控制器里统一都使用 view() 来加载视图,可以参考 vendor/laravel/framework/src/Illuminate/Foundation/helpers.php 里的:

if (! function_exists('view')) {
    /**
     * Get the evaluated view contents for the given view.
     *
     * @param  string  $view
     * @param  \Illuminate\Contracts\Support\Arrayable|array   $data
     * @param  array   $mergeData
     * @return \Illuminate\View\View|\Illuminate\Contracts\View\Factory
     */
    function view($view = null, $data = [], $mergeData = [])
    {
        $factory = app(ViewFactory::class);

        if (func_num_args() === 0) {
            return $factory;
        }

        return $factory->make($view, $data, $mergeData);
    }
}

你改成:

function view($view = null, $data = [], $mergeData = [])
    {
        $factory = app(ViewFactory::class);

        if (func_num_args() === 0) {
            return $factory;
        }

        $view = config('theme.name') . '.' . $view;

        return $factory->make($view, $data, $mergeData);
    }
5年前 评论
JeffreyBool (楼主) 5年前
讨论数量: 4

:joy: 去翻翻 discuz 的源码就知道了..

5年前 评论
JeffreyBool (楼主) 5年前
sodasix (作者) 5年前
Summer

如果控制器里统一都使用 view() 来加载视图,可以参考 vendor/laravel/framework/src/Illuminate/Foundation/helpers.php 里的:

if (! function_exists('view')) {
    /**
     * Get the evaluated view contents for the given view.
     *
     * @param  string  $view
     * @param  \Illuminate\Contracts\Support\Arrayable|array   $data
     * @param  array   $mergeData
     * @return \Illuminate\View\View|\Illuminate\Contracts\View\Factory
     */
    function view($view = null, $data = [], $mergeData = [])
    {
        $factory = app(ViewFactory::class);

        if (func_num_args() === 0) {
            return $factory;
        }

        return $factory->make($view, $data, $mergeData);
    }
}

你改成:

function view($view = null, $data = [], $mergeData = [])
    {
        $factory = app(ViewFactory::class);

        if (func_num_args() === 0) {
            return $factory;
        }

        $view = config('theme.name') . '.' . $view;

        return $factory->make($view, $data, $mergeData);
    }
5年前 评论
JeffreyBool (楼主) 5年前

直接动态引入不同主题的 CSS 即可。

5年前 评论

github上有很多主题扩展啊,随便用一个都行,https://github.com/FaCuZ/laravel-theme, 我一般用这个,功能足够用了

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!