I created an image uploading method in my parent class. now I want to pass an input image file to that method from my child class. I am getting an error when I pass the file.
Parent class,
class BaseController extends Controller{
public function upload($file,$fname,$a,$b,$c){
$file = $request->file('featured');
if ($file->isValid()) {
.....
}else {
.....
}
}
}
Child class,
class PageController extends BaseController{
public function store(Request $request)
{
BaseController::upload($file,'pages',$request->banner_alt,
$request->banner_caption,$request->banner_description);
}
}
And I get an error: Call to a member function isValid() on null. Could anybody here help me, please? Thanks in Advance :)
You are passing the $file parameter in the child class when you call the upload function, but then you override it in the upload function itself.
class BaseController extends Controller
{
public function upload($file, $fname, $request){
$a = $request->banner_alt;
$b = $request->banner_caption;
$c = $request->banner_description;
// Maybe:
// $file = $request->file($fname)
// ?
$file = $request->file('featured');
if ($file->isValid()) {
.....
}else {
.....
}
}
}
// Child class
class PageController extends BaseController
{
public function store($file, Request $request)
{
BaseController::upload($file, 'pages', $request);
}
}
You are not sending request object in upload method of your parent class so just replace your child class method by this,
public function store(Request $request)
{
BaseController::upload($request,'pages',$request->banner_alt,
$request->banner_caption,$request->banner_description);
}