【问题标题】:laravel Cleaning code + make it work correctlylaravel 清理代码+使其正常工作
【发布时间】:2020-07-28 20:39:56
【问题描述】:

你好,我有这个简单的更新方法,但它有问题 问题是用户有四个条件 用于用户编辑

1- 旧电子邮件 == 新电子邮件

2- 旧电子邮件!== 新电子邮件

3- 密码 == null

4- 密码 !== null

所以核心功能是这样的

            $v = Validator::make($request->all(),[
                'name_ar' => ['required', 'string', 'max:255'],
                'name_en' => ['required', 'string', 'max:255'],
                'email' => [ 'required' ,'string', 'email', 'max:255'],
                'permission' => ['required', 'string'],
                'branch' => ['required', 'integer'],    
            ]);
            if($v->fails()){
                return redirect()->back()->withErrors($v)->withInput();
            }
          $user->name_ar = $request->input('name_ar');
          $user->name_en = $request->input('name_en');
          $user->email = $request->input('email');
          $user->password = $user->password;
          if($selected_permission == 'admin'){
            $this->saveAsAdmin($request , $user);
            return redirect('super-admin/permissions/index')->with('success' , 'User Edited Successfully');
          }
          $this->saveAsUser($request , $user);
          return redirect('super-admin/permissions/index')->with('success' , 'User Edited Successfully');
        }

另存为管理员和另存为用户是简单的方法

另存为管理员

public function saveAsAdmin($request , $user)
{
    $user->is_admin = 1;
    $user->is_user = 0;
    $user->branch_id = $request->input('branch');
    $user->save();
}

另存为用户

public function saveAsUser($request , $user)
{
    $user->is_admin = 0;
    $user->is_user = 1;
    $user->branch_id = $request->input('branch');
    $user->save();
    }

问题是,如果我做了 4 种方法并在每种情况下使用它们,它就不能正常工作 名称 ar + 名称 en + 权限未保存到数据库中 + 验证器不显示错误 在过去的几个小时里,我一直在努力让它变得干净,但没有任何东西真正正常工作,所以我最终把它变成了这样

public function update(Request $request , $id)
{
    $user = User::find($id);
    $old_email = $user->email;
    $new_email = $request->input('email');
    $selected_permission = $request->input('permission');
    if($old_email == $new_email){
        if($request->input('password') == null){
        $v = Validator::make($request->all(),[
            'name_ar' => ['required', 'string', 'max:255'],
            'name_en' => ['required', 'string', 'max:255'],
            'email' => [ 'required' ,'string', 'email', 'max:255'],
            'permission' => ['required', 'string'],
            'branch' => ['required', 'integer'],    
        ]);
        if($v->fails()){
            return redirect()->back()->withErrors($v)->withInput();
        }
      $user->name_ar = $request->input('name_ar');
      $user->name_en = $request->input('name_en');
      $user->email = $request->input('email');
      $user->password = $user->password;
      if($selected_permission == 'admin'){
        $this->saveAsAdmin($request , $user);
        return redirect('super-admin/permissions/index')->with('success' , 'User Edited Successfully');
      }
      $this->saveAsUser($request , $user);
      return redirect('super-admin/permissions/index')->with('success' , 'User Edited Successfully');
    }

    $v = Validator::make($request->all(),[
        'name_ar' => ['required', 'string', 'max:255'],
        'name_en' => ['required', 'string', 'max:255'],
        'email' => [ 'required' ,'string', 'email', 'max:255'],
        'password' => ['required', 'string', 'min:8',],
        'permission' => ['required', 'string'],
        'branch' => ['required', 'integer'],    
    ]);
    if($v->fails()){
        return redirect()->back()->withErrors($v)->withInput();
    }
  $user->name_ar = $request->input('name_ar');
  $user->name_en = $request->input('name_en');
  $user->email = $request->input('email');
  $user->password = bcrypt($request->input('password'));
  if($selected_permission == 'admin'){
    $this->saveAsAdmin($request , $user);
    return redirect('super-admin/permissions/index')->with('success' , 'User Edited Successfully');
  }
  $this->saveAsUser($request , $user);
  return redirect('super-admin/permissions/index')->with('success' , 'User Edited Successfully');
}else{
    if($request->input('password') == null){
        $v = Validator::make($request->all(),[
            'name_ar' => ['required', 'string', 'max:255'],
            'name_en' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'permission' => ['required', 'string'],
            'branch' => ['required', 'integer'],    
        ]);
        if($v->fails()){
            return redirect()->back()->withErrors($v)->withInput();
        }
      $user->name_ar = $request->input('name_ar');
      $user->name_en = $request->input('name_en');
      $user->email = $request->input('email');
      $user->password = $user->password;
      if($selected_permission == 'admin'){
        $this->saveAsAdmin($request , $user);
  return redirect('super-admin/permissions/index')->with('success' , 'User Edited Successfully');

      }
      $this->saveAsUser($request , $user);
  return redirect('super-admin/permissions/index')->with('success' , 'User Edited Successfully');

    }
    $v = Validator::make($request->all(),[
        'name_ar' => ['required', 'string', 'max:255'],
        'name_en' => ['required', 'string', 'max:255'],
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password' => ['required', 'string', 'min:8'],
        'permission' => ['required', 'string'],
        'branch' => ['required', 'integer'], 
    ]);
    if($v->fails()){
        return redirect()->back()->withErrors($v)->withInput();
    }
  $user->name_ar = $request->input('name_ar');
  $user->name_en = $request->input('name_en');
  $user->email = $request->input('email');
  $user->password = $user->password;
  if($selected_permission == 'admin'){
    $this->saveAsAdmin($request , $user);
  return redirect('super-admin/permissions/index')->with('success' , 'User Edited Successfully');

  }
  $this->saveAsUser($request , $user);
  return redirect('super-admin/permissions/index')->with('success' , 'User Edited Successfully');

}

}

是的,它是 UGLYYY 我完全同意你的观点,但至少它可以正常工作,我对 laravel 并不陌生,但我对在 php 中编写干净的代码知之甚少,也许是因为我没有学习纯 php 我只是直接学了laravel

请与我分享一个可行的 + 干净的解决方案,以便未来的每个人 + 学习者都可以提高他们的技能和知识

【问题讨论】:

  • 是的,是的,我是根据你的记忆说的,不过感谢提醒我会编辑它
  • 这毫无意义:$user->password = $user->password;
  • 太棒了,我会删除它你有一点,我会立即删除它,但是如果我们用一个命名函数将 if 语句的每个块分开,但当我这样做时,真正会变得更好的是验证器在索引页面上显示错误,并且某些信息未正确保存我不知道为什么,有什么想法吗?
  • 有很多不必要的代码,例如如果用户不是管理员,只需将其保存为 is_admin = 0。不需要 is_user = 1,is_admin = 0;第二个建议是批量分配这些变量,这将使代码更短。
  • 它只是为了提供更多保护,例如,如果有人知道数据库的结构并且他使用例如 burp 套件将它们都分配给 1,这将在未来产生问题,并且关于分配给 i将使用它感谢您的建议^_^

标签: php laravel coding-style code-cleanup


【解决方案1】:

这是更新用户的简单代码。也许它可以帮助你

public function updateUser(Request $request)
{
    $validator = Validator::make($request->all(), [
        'id' => 'required|numeric',
        'email' => 'required|max:255',
        'name' => 'required|max:255',
    ]);
    if ($validator->fails()) {
        return ['code' => "ERROR_PARAMS"];
    }
    $requestData = $request->all();

    $user = User::find($requestData['id']);
    $user->email = $requestData['email'];
    $user->name = $requestData['name'];
    // Change password if exist param 'password'
    if ($requestData['password'] != null) {
        $user->password = bcrypt($requestData['password']);
    }
    
    $user->save();
    return ['code' => "SUCCESS"];
}

【讨论】:

  • 是的,先生,我知道核心代码,但我的问题是我有四个条件,如果我直接输入,我会得到混乱的代码但工作代码,如果我打破每一个并将其放入分离的功能它不能正常工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-19
  • 2012-11-22
  • 1970-01-01
  • 1970-01-01
  • 2011-11-06
相关资源
最近更新 更多