用户注册
打赏作者

JellyBool

其实 vip平均下来很划算的啊 @richardxxx0x

何况我这个系列要更到25个视频才结束,算算跟前面的一样。

shaoslu

这视频有包括后台的吗

天山网艾克 回复 shaoslu

后台是逻辑业务不一样,写的也不一样了呗

天山网艾克 回复 shaoslu

我看这些视频主要是通过laravel快速完成项目,很多实际问题仍然关系到你的逻辑

天山网艾克

我问一下一个问题,我后台需要管理这些用户,前台也有用战士的部分。User::where(‘is_admin’,1) 这样写没获取任何信息。然后改成这样$users=User::all()->where(‘is_admin’,1); 才显示出来。这也写法对不对呢。

JellyBool 回复 天山网艾克
User::where('is_admin',1)->get();
1965741954

illuminate/html在laravel5.3时报以下错误

FatalErrorException in Facade.php line 237:
Call to undefined method Illuminate\Html\FormFacade::open()

搜了下是不是这个package在5.1之后不支持了?

------------------分割线---------------------
话说凭着蹩脚的英文水平看了一些英文社区,发现5.3要先用这里的
问题:Laravel 5.1中Form组建不能安装
http://www.cnblogs.com/derrck/p/4685864.html

然后那个Form的password照楼主那么写样式出不来,把null去了就能显示样式了,英文不好看不太懂文档,楼主啥时候针对Form发个视频呗- -,啃这文档好吃力.

https://laravelcollective.com/docs/5.3/html

JellyBool 回复 1965741954

这个 laravelcollective 跟 form 是差不多的,可以参照视频的用法

wl876645

5.3用自带的auth/RegisterController和你讲的哪种方法好

JellyBool 回复 wl876645

如果你没有其他的自定义的需求的吧,可以使用自带的 auth/RegisterController

wl876645 回复 JellyBool

大神。有没有解读底层源码的地方,英文不好一大篇谷歌英文不知道从哪里找起,谢谢

JellyBool 回复 wl876645

你是说什么模块的源码?这里有 Eloquent Model 的:https://laravist.com/series/dive-into-laravel-eloquent-model

VincentSeven

1.输入bsmedia然后自动出现一段html代码
2.输入form自动出现{ Form::open([‘url’=>’’]) }

这两点是怎么设置的呀?我的phpstorm不可以这样(有安装Illuminate\Html)

Kwong Yan Chan

自己创建了UsersRegisterRequest,但后面点击提交出无反应了 。 查看页面元素–网络 ,找到报头是说302重定向。。用框架原来的就没有问题。跟楼主用的版本是一样的5.1.11 应该是这个

JellyBool 回复 Kwong Yan Chan

你检查了一下 UsersRegisterRequest 的 authorize 方法,看看是否有修改 为 true

Kwong Yan Chan 回复 JellyBool

已经设置成 true了
刚才注释掉几个规则发现可以打印出来了 。 我再排除下,重学L框架,跟你一样的环境好操作点。所以现在是5.1版本,现在只限定name是必须的打印就出来了, 规则上可能有错误 我打印下吧,

Kwong Yan Chan 回复 JellyBool

哎呀 , 低级错误 。 页面上一个低级错误,字母位置换了 。 打印出错误才发现 。。

北漂张小白

注册时候在store()方法中打印出来的参数中 有个_token, 可在表单中并没有生成token, 是post请求会自动生成_token吗?

JellyBool 回复 北漂张小白

使用 Form package 会自动生成的.

北漂张小白 回复 JellyBool

哦哦,明白了,多谢!

y7ut123 回复 JellyBool

那为何数据库中的remember_token没有字符串是空呢。。。

JellyBool 回复 y7ut123

这个 token 跟 remember_token 没有什么关系

Young 回复 JellyBool

搞了半天也没有找到哪里出得问题,remember_token 就是无法写到数据库中,求指点迷津

JellyBool 回复 Young

记得看看你的 fillable

Young 回复 JellyBool

protected $fillable = [‘name’, ‘email’, ‘password’,‘avatar’];
protected $hidden = [‘password’, ‘remember_token’];
参数应该没有问题吧

JellyBool 回复 Young
protected $fillable = [‘name’, ‘email’, ‘password’,‘avatar’,'remember_token'];
Young 回复 JellyBool

之前我也设置过,并没有起作用

JellyBool 回复 Young

额。。。那就很尴尬了

Young 回复 JellyBool

以前做其他Laravel项目也遇到过不过后来解决了,现在解决不掉很难受。。。

gengyi

老师好,我用的是laravel5.4.在创建规则的时候,出现了use Illuminate\Foundation\Http\FormRequest; 类的继承也不一样class UserRegisterRequest extends FormRequest,在UsersController中些的时候,如果是按照你的代码写,是Class App\Http\Controllers\Requests\UserRegisterRequest does not exist,如果修改成 public function store(UserRegisterRequest $request),则dd(),页面不变动,没有输出,密码那地方填写内容显示

JellyBool 回复 gengyi
store(UserRegisterRequest $request

这个注意命名空间就好了啊

a359611223
public function setPasswordAttribute($password){
        $this->attributes['password'] = Hash::make($password);
}

这段代码如何理解呢

hate
                    {!! Form::submit('马上注册', ['class' => 'btn btn-primary form-control']) !!}

我这样不显示中文;
而且我检查元素没有是这样

这样就能显示出来
{!! Form::submit(‘register’, [‘class’ => ‘btn btn-primary form-control’]) !!}

JellyBool 回复 hate

编辑器不支持中文字符?

hate 回复 JellyBool

illuminate/html
好像我加入中文都没有value 这个属性
{!! Form::label(‘name’,‘用户名:’) !!}
{!! Form::label(‘email’,‘邮箱:’) !!}
{!! Form::label(‘paassword’, ‘密码:’) !!}
{!! Form::submit(‘register’, [‘class’ => ‘btn btn-success form-control’]) !!}
只要是是中文都不显示

JellyBool 回复 hate

换编辑器或者升级依稀版本。

改用 collective html 这个 package 吧。illuminate/html 已经不维护了

hate 回复 JellyBool

collective html 跟illuminate/html 用法有点 差别还是一模一样

yaya2boccai

大神,User 里面的setPasswordAttribute方法没有被调用啊, 什么时候执行的呢?

JellyBool 回复 yaya2boccai

存入数据库的时候

Nixus

@JellyBool 如果是在API开发中使用表单请求类这种方式来做验证,验证不通过的时候,会直接跳转到首页;
在网上找了一个解决方案:https://laracasts.com/discuss/channels/laravel/form-request-to-validate-in-my-api-rest
Illuminate\Foundation\Http\FormRequest 这个类中加了一个判断,大概是 78 行之后:

if (method_exists($this, 'response')) {
    return $this->response($validator);
}

然后在表单请求类中,加一个response方法

public function response($validator)
{
    return response()->json($validator->errors());
}

直接输出错误信息
这样改了之后有两个困惑,
1、改了框架的代码,以后更新会有影响;
2、返回的错误信息没有加API返回信息的格式,不清楚 表单请求类 中,是否也可以使用API Resource

Nixus

找到了新的解决方案:
发起请求时,在header中加入:X-Requested-With:XMLHttpRequest
如果验证不通过,就会返回json格式的数据,不需要做任何修改

Nixus

@JellyBool 老师,上面那个问题解决了,又有个新的问题,就是返回的数据格式的问题:

{
    "message": "The given data was invalid.",
    "errors": {
        "mobile": [
            "请检查手机号码是否正确"
        ],
        "email": [
            "请填写邮箱"
        ]
    }
}

这是验证没通过时,返回的错误信息。怎么改成实际需要格式呢?
一般都会有一个错误码的那种格式
改格式这个,真的是不知道如何用英文搜了

JellyBool 回复 Nixus

感觉重写这个方法就OK:

public function response($validator)
{
    return response()->json(array_merge(['error_code'=>224],$validator->errors()));
}
Nixus 回复 JellyBool

谢谢老师回复!
后来新建了app/Extensions这个目录,在里面重写了Illuminate\Foundation\Http\FormRequest这个类,覆盖了failedValidation方法,终于解决了这个问题。
最大的感觉就是,思路不够开阔,对laravel不熟悉,laravel没有的,或者不适合的地方,自己还想不到通过重写类方法这种途径去解决问题,思维太局限了

lenglvse

htmlspecialchars() expects parameter 1 to be string, array given (View: D:\laragon\www\laravel\resources\views\users\register.blade.php)
这个是怎么回事

JellyBool 回复 lenglvse

参数传成数组了