多域名 group
代码:
Route::group(['domain' => '{account}.myapp.com'], function () {
Route::get('user/{id}', function ($account, $id) {
//
});
});
官网的文档。
我打印过Account 输出的是一个对象啊。 怎么返回 {account} 的字符串呢?
@JellyBool 是的。已经测试ok了
ok 测试完毕 ,完美获取。 这就是弯路啊。。。。
我用的路由是 resource 注册的
如我的URL是这样的
domain.com/edit/123213123
但是我在Request里面需要做处理,但又不需要再控制器里面获取id
因为控制器里面的代码是这样的
public function update(Requests\DemoRequest $request,$id)
{
$Demo = Demo::findOrFail($id);
$Demo->update($request->all());
return redirect('/Demo');
}
很显然如果是控制器里面 直接就可以用id拿到。
但是在DomeRequest里边的rule函数里边呢?
public function rules()
{
return [
'num_mark' => "required|digits:11,|unique:demotab,num_mark"'.$id.',_id',
];
}
}
如上述一样id肯定是拿不到的。
期间我试过了 input::get('id'),也是拿不到的。只能拿到我提交的数据。
去也用过Request 各种方法尝试还是没拿到。。。还用过route的一些方法也没拿到。。不知道是不是方法弄错了?还请指教
https://laravist.com/series/laravel-5-basic/episodes/12
如上述教程里面讲的。
视频在播放到8:33 的时候讲述得到 多个请求都走同一个 rule 的时候。但是……对于我们小白还是不知道……我看了好久的 http://laravel.com/docs/5.1/validation#rule-array
也没看到多个的时候怎么处理……
public function rules()
{
//更新数据的时候我想反悔如下
return [
'tel' => "required|digits:11",
'email' => 'email'
];
//新增的时候我就走这的rule 规则
return [
'username' => 'required|unique:system_user,username',
'email' => 'required|unique:system_user,email',
'tel' => "required|digits:11",
'email' => 'email'
];
}
创建的 Route 是 /user/create
更新的 Route 是 /user/update
请问怎么识别?
补充一个问题。
如我想除本身id以外的数据才执行email唯一更新怎么弄?
我按照官方的文档弄的是这样的。
'email' => 'email|unique:user,email,'.\Auth::user()->id
我打印了一下数据是这样的
"email|unique:user,email,563496beab600d5237124848"
数据也是没问题的。
但是呢老提示……
email重复了。啥情况?
上问题答案:::::
感谢 @justtest 的处理
因为我安装的是mongodb 所以我的主键是 _id,而laravel 默认的主键的就是
protected function getUniqueIds($parameters)
{
//********看到没他的如果没给定主键的话,他就是id了。而我没有id字段
$idColumn = isset($parameters[3]) ? $parameters[3] : 'id';
return [$idColumn, $parameters[2]];
}
所以我们得改一下代码加上自定义字段
'email' => 'email|unique:user,email,'.\Auth::user()->id.',_id',
这样就大功告成了!!!再次感谢
class User extends Eloquent implements AuthenticatableContract,AuthorizableContract,CanResetPasswordContract
{
use Authenticatable, Authorizable, CanResetPassword;
// codes
}