【问题标题】:pass params from function to funtion and access inputs -Laravel [duplicate]将参数从函数传递到函数并访问输入-Laravel [重复]
【发布时间】:2022-01-27 00:07:25
【问题描述】:

以下代码显示错误TypeError: Argument 1 passed to App\Http\Controllers\StudentLearningController::update() must be an instance of Illuminate\Http\Request, array given

use Illuminate\Http\Request;
class StudentLearningController extends Controller{

 public function abc(){
    $myCourseData['points'] = "1";                 
     $myCourseData['totalPoints'] = "2";
    
    $this->update($myCourseData,$myCourseId);
  }
}

我想传递 2 个参数:pointstotalPoints 从函数 abc() 到函数 update() 并在 update() 中以 $request->points; 访问 points。我该怎么做?只有pointstotalPoints 是从上述函数传递过来的,update() 函数输入中的其他参数是从其他函数中更新的。

 use Illuminate\Http\Request;
trait MyCourseTrait{
function update($request,$id){

 $validator = Validator::make(
            $request->all(),
            [
                'course_id'       => 'nullable|integer',  
                'exam_numbers'    => 'nullable|integer',
                'points'          => 'nullable|integer', 
                'subscription' => 'nullable|boolean',
                'totalPoints'=>'nullable|integer'
            ]
        );     

$points =  $request->points;
 }    
}    

我知道,上面给出的错误是因为我将array 传递给update() 函数的输入。但我不能简单地这样做

$points="1";
$totlaPoints="2";
$this->update($points,$totlaPoints,$myCourseId);

因为 MyCourseTrait 中的 update() 函数不能有超过 2 个参数:$request$id,因为这个函数在我的项目中的其他一些情况下使用,其中只提供了 2 个参数。这是我面临的实际问题。

【问题讨论】:

  • 您的代码和错误信息不太吻合。错误提及方法 abc() - 您的代码中没有 any 参数。您的 update() 方法位于不同的控制器中。设置$points = $request->points; 并且不返回任何内容是没有实际用处的。
  • @Jerson 在第一个参数中意味着什么?
  • 您应该在请求中附加额外的键值对。 See push()
  • @InsaneSkull 我已经浏览了这个链接。在我的情况下我应该如何实现它?你能给我举个例子吗?请..
  • 如果你想在StudentLearningController 中使用自定义函数update 类似地在myCourseController 控制器中尝试复制它们(仅用于测试)或使用特征。现在在您的代码中使用来自默认类Controller的标准函数update

标签: php arrays laravel validation laravel-8


【解决方案1】:

您正在将一个数组传递给更新函数的第一个参数,我猜它应该是 Request 的一个实例

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;


    class DashboardController extends Controller
    {
        public function abc(){
            $myCourseData = new Request(["points" => "1"]);
            $myCourseId = 5;
    
            $this->update($myCourseData,$myCourseId);
        }
    
        public function update(Request $request, $id){
            $points =  $request->points;
            dd($points);
        }
    }

【讨论】:

  • 我有 $myCourseData 的数组 pointstotalPoints 传递给函数 update 。我不知道如何将这个数组设为instance of Request。你能告诉我吗?
  • 在类的顶部添加use Illuminate\Http\Request,告诉它使用哪个Request类。
  • 我已添加。我的问题是将整数数组传递给更新函数,但 instance of Request 实际上是该函数中预期的 type
  • 你是用两个控制器还是只用一个因为你写$this->update($myCourseData,$myCourseId);
  • 我正在使用 2 个控制器
猜你喜欢
  • 2022-01-25
  • 2016-10-18
  • 1970-01-01
  • 2015-09-26
  • 2020-12-15
  • 1970-01-01
  • 2022-01-26
  • 2013-12-16
  • 2019-06-18
相关资源
最近更新 更多