最近发表的话题
最近发表的评论
  • 我现在用 5.6 看 5.5 还是 5.7 的?教程比较好? at 2天前

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

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

    追了一下源码,渲染成 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 2个月前

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

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

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

  • slug 有 bug? at 2个月前

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

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

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

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

    @huzhuolei 环境是怎么样的?

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

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

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

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

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

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

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

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

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

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

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

    @等车的猪 以火狐为例

    file

  • 想给 node_modules 文件夹瘦身,哪些内容不能删 at 3个月前

    nodejs 就是这样的,开发完成后,整个 node_modules 都可以删掉,不影响项目的运行

  • 创建新项目报错 at 3个月前

    报错信息很明显,larave 5.5 不支持你当前的 PHP 版本 5.5.38, laravel 5.5 要求 PHP >= 7.0.0

  • middleware 为什么 show 也要 except? at 4个月前

    此处是在提供方法,是否开放访问权限取决于业务逻辑

  • $users 这个变量为啥下面又变成 $user 了 at 4个月前

    $users 是创建出的所有用户,$user 是指定的 id 为 1 的单个用户。
    这段代码的意思是先创建出 50 个用户,将这些用户填入数据表,然后单独取出 id 为 1 的用户,手动指定表中该用户的三个字段。

  • {{ $errors->has ('name') ? ' has-error' : '' }}这个表单样式是不是有问题? at 4个月前

    has-error 样式的来源是 Bootstrap,在 Laravel 的项目则是定义在 public/css/app.css 中:

    .has-error .help-block,
    .has-error .control-label,
    .has-error .radio,
    .has-error .checkbox,
    .has-error .radio-inline,
    .has-error .checkbox-inline,
    .has-error.radio label,
    .has-error.checkbox label,
    .has-error.radio-inline label,
    .has-error.checkbox-inline label {
      color: #a94442;
    }
    
    .has-error .form-control {
      border-color: #a94442;
      -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
      box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
    }

    看一看是不是这方面的原因。

  • 找不到控制器里面的方法?笔记也没有说明 at 4个月前

    因为:

    use ResetsPasswords;

    此处引入了 ResetsPasswords 这个 trait,具体的方法在里面。

  • {{ $errors->has ('name') ? ' has-error' : '' }}这个表单样式是不是有问题? at 4个月前

    这个表达式的作用就是在表单合法性验证不通过时增加 has-error 的样式,具体的可以到前端,打开开发者调试工具进行查看;故意不通过合法性验证,样式就渲染成了 <div class="form-group has-error">