最近发表的话题
最近发表的评论
  • VS Code + Homestead + Xdebug 断点调试配置 at 1个月前

    @huzhuolei 感谢提供反馈,能自己解决问题是最有成就感的。

  • 如何让邮件真正发送出去? at 1个月前

    @Demo 建议想要使用哪家的服务,就到哪家的页面上去看配置方法,一般而言是开启 POP3/SMTP/IMAP 服务,并且在客户端中选择合适的服务以及正确的端口,在 Laravel 中则是在 .env 中进行配置。至于密码,无非两种情况:1.登录密码;2.一次性的授权码,这个取决于服务供应商的配置。

  • 如何让邮件真正发送出去? at 1个月前

    不要着急,后面的章节有介绍。

  • VS Code + Homestead + Xdebug 断点调试配置 at 1个月前

    @huzhuolei 浏览器访问和 postman 访问本质上没有区别,而我这里实测,浏览器和 postman 访问都可以进入断点。请确认是否访问了需要断点的接口,在到达断电前,脚本是否已经发生了中断。

  • 如何将页面访问次数同步到数据库中? at 1个月前

    @深入浅出 redis 的作用是用来存放数据,什么时候存入数据,什么时候读取数据看的是业务逻辑,你想在首页上显示阅读数据无非就是调用方法来读取数据,显示哪些数据,如何显示这些数据要看你自己的想法。

  • 为什么这个 Homestead 在我电脑上运行这么慢? at 2个月前

    如果主机是 Windows 的,那就是 VirtualBox 的 I/O 引起的,可参考此文
    Linux 系统的主机无此问题。

  • 问一个问题,发现这个只有在 5.7 版本下有,是不支持 5.5 版本么 at 2个月前

    并不是不支持 5.5,至少我在 5.5 的文档里看到了这个方法,只是当时的课程没有提到。另外,实践出真知。

  • 我现在用 5.6 看 5.5 还是 5.7 的?教程比较好? at 3个月前

    直接看最新版本,也可以看 5.5 的,比较一下两者的异同

  • route () 函数将 https 渲染成了 http at 4个月前

    追了一下源码,渲染成 http:// 的原因可能如下:
    route 函数的定义在 /vendor/laravel/framework/src/Illuminate/Routing/Redirector.php 中:

    /**
     * Create a new redirect response to a named route.
     *
     */
    public function route($route, $parameters = [], $status = 302, $headers = [])
    {
        return $this->to($this->generator->route($route, $parameters), $status, $headers);
    }

    注意其中的 to 方法:

    /**
     * Create a new redirect response to the given path.
     *
     */
    public function to($path, $status = 302, $headers = [], $secure = null)
    {
        return $this->createRedirect($this->generator->to($path, [], $secure), $status, $headers);
    }

    传递了一个 $secure 参数给到 generatorto 方法,且默认值为 null ,找到 /vendor/laravel/framework/src/Illuminate/Routing/UrlGenerator.php 中的定义:

    /**
     * Generate an absolute URL to the given path.
     */
    public function to($path, $extra = [], $secure = null)
    {
        ……
        $root = $this->formatRoot($this->formatScheme($secure));
    }

    $secure 参数传递到了 formatScheme 方法,找到定义:

    /**
     * Get the default scheme for a raw URL.
     */
    public function formatScheme($secure)
    {
        if (! is_null($secure)) {
            return $secure ? 'https://' : 'http://';
        }
    
        if (is_null($this->cachedSchema)) {
            $this->cachedSchema = $this->forceScheme ?: $this->request->getScheme().'://';
        }
        return $this->cachedSchema;
    }

    可以看到,当 $secure 不为空时,会根据 $secure 的值来选择 https 还是 http;如果 $secure 为空,则会去检查 $cachedSchema 的值并返回,如果 $cachedSchema 的值为空,则会根据 $forceScheme 的值来进行设定,如果 $forceScheme 的值为空,则会调用 getScheme 方法来进行相关的设置,找到 /vendor/symfony/http-foundation/Request.php 中的定义:

    /**
     * Gets the request's scheme.
     */
    public function getScheme()
    {
        return $this->isSecure() ? 'https' : 'http';
    }

    此处会通过 isSecure 方法来检查安全性配置:

    /**
     * Checks whether the request is secure or not.
     *
     * This method can read the client protocol from the "X-Forwarded-Proto" header
     * when trusted proxies were set via "setTrustedProxies()".
     *
     * The "X-Forwarded-Proto" header must contain the protocol: "https" or "http".
     *
     * If your reverse proxy uses a different header name than "X-Forwarded-Proto"
     * ("SSL_HTTPS" for instance), configure it via the $trustedHeaderSet
     * argument of the Request::setTrustedProxies() method instead.
     *
     * @return bool
     */
    public function isSecure()
    {
        …… 重点看注释
    }

    如果使用了教程中的默认设置,最终返回的链接是否启用 https:// 是由服务器的相关配置决定的。 herokuapp.com 这个域名是有 SSL 证书的,如果要渲染出 https:// 链接,方法有两个:1.修改 heroku 上的相关配置;2.设定 $forceScheme 的值,强制启用 HTTPS

  • @stop 是不是可以替换成 @endsection ? at 5个月前

    Laravel 的作者 Taylor Otwell 说过:
    @Stop is just @endsection from L3.. @show is just @yieldSection

  • 完全不需要定制 Laravel 密码重置邮件功能 at 5个月前

    默认即可用,但要用好,还是需要自定义的;出于学习的目的,更应该定制一下邮件模板。

  • slug 有 bug? at 5个月前

    @等车的猪 感谢,这也是一种思路。

  • 这一小节有问题,希望作者改正,谢谢? at 5个月前

    @等车的猪 按照我的理解,POST PUT PATCH,要共用一条执行语句,可行的一个方法是按顺序执行 switch 结构,而不在达到条件时跳出;加了 break ,达到条件时就会跳出 switch 结构,这样每个条件都需要写相应的执行语句,有些重复了。

  • 为何我 Git add 的时候出现很多 warning: CRLF will be replaced by LF ? at 5个月前

    @huzhuolei 环境是怎么样的?

  • unguard 和 reguard 是什么意思 at 6个月前

    unguard() 用于解除对于数据库的填充限制,reguard() 则是重新加上这个限制,这是对数据的一种保护,然而, Laravel 5.5 在执行数据库填充的时候这两个方法不是必须的。

  • 为啥可以这样调用方法 又不是属性 at 6个月前

    @等车的猪 不谢,弄明白了就好

  • 为啥可以这样调用方法 又不是属性 at 6个月前

    @等车的猪 为什么不是这种调用?$userUser 类的一个对象,gravatar()User 类中定义的一个方法; __get() 方法是在调用属性,此处调用的是方法。

  • 为啥可以这样调用方法 又不是属性 at 6个月前

    @等车的猪 对象调用类中的方法啊

  • 为啥可以这样调用方法 又不是属性 at 6个月前

    因为此处的 $user 是 User 模型的一个实例

  • 此处留下一个小小的提醒,检查了两个小时才发现 at 6个月前

    @等车的猪 以火狐为例

    file