php - Why auth register route gives blank and custom route shows another controller error
I have tried to create two different ways registration form.
First try was Auth::routes();
login form and route works but registration page shows blank page.
If I tried Auth::routes(['register' => false]);
then shows atleast 404 page
.
Then I tried use custom routes:
Route::group(['namespace' => 'Auth', 'prefix' => 'partner'], function () {
Route::get('login', 'LoginController@showLoginForm')->name('login');
Route::post('login', 'LoginController@login');
Route::get('register', 'RegisterController@showRegistrationForm')->name('register');
Route::post('register', 'RegisterController@register');
});
Both controllers shows that front controller error line 665
.
My Auth register controller:
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\User;
use App\Company;
use Hash;
class RegisterController extends Controller
{
public function __construct()
{
parent::__construct();
view()->share('pageTitle', __('email.registerAccount'));
}
public function showRegistrationForm()
{
return view('auth.register');
}
public function register(Request $request)
{
$request->validate([
'first_name' => 'required|string|max:255',
'last_name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'phone', 'required|integer|max:255',
'password' => 'required|string|min:8|confirmed',
'business_type' => 'required'
]);
$user = new User();
$user->first_name = $request->first_name;
$user->last_name = $request->last_name;
$user->calling_code = $request->calling_code;
$user->mobile = $request->mobile;
$user->email = $request->email;
$user->password = $request->password;
if ($request->hasFile('image')) {
$user->image = Files::upload($request->image,'avatar');
}
$user->save();
$company = new Company();
$company->owner_id = $user->id;
$company->type = $request->business_type;
$company->save();
return redirect('login');
}
}
My mission is create registration forms for customer and partner, so I thinked I'll use same auth controller but different functions..
But I dont understand why it shows front controller error:
"Trying to get property 'name' of non-object" - line 665
And if im using front pages, there is no any errors at all. It shows only in that registration form.
Line 665:
public function serviceDetail(Request $request, $categorySlug, $serviceSlug)
{
$service = BusinessService::where('slug', $serviceSlug)->first();
$products = json_decode($request->cookie('products'), true) ?: [];
$reqProduct = array_filter($products, function ($product) use ($service) {
return $product['serviceName'] == $service->name; //Line 665
});
return view('front.service_detail', compact('service', 'reqProduct'));
}
Answer
Solution:
$service = BusinessService::where('slug', $serviceSlug)->first();
return null.
Make sure there is data in BusinessService, And there is data when 'slug' === $ serviceSlug
anyway you have to car where no data is returned from DB