نمایش نتایج 1 تا 10 از 10

نام تاپیک: ثبت نام کاربر در جدول مجزا

  1. #1

    Question ثبت نام کاربر در جدول مجزا

    سلام
    من با لاراول 5.4 کار میکنم و از auth استفاده میکنم همچنین کاربر دومی در اپلیکیشن خودم دارم در جدول companies که این کاربرها در کنار هم بخوبی کار می کنند منتها مشکل من در ثبت نام از کاربر دوم که company باشه است موقع ثبت نام کاربر به عنوان شرکت این پیغام خطا رو دریافت میکنم:

    Type  error: Too few arguments to function  App\Http\Controllers\Auth\CompanyRegisterControlle  r::create(), 0 passed  and exactly 1 expected


    کد کنترلر ثبت نام هم این هست:

    <?php

    namespace App\Http\Controllers\Auth;

    use Illuminate\Http\Request;
    use App\User;
    use App\Http\Controllers\Controller;
    use Illuminate\Support\Facades\Validator;
    use Illuminate\Foundation\Auth\RegistersUsers;

    class CompanyRegisterController extends Controller
    {

    /**
    * Where to redirect users after registration.
    *
    * @var string
    */
    protected $redirectTo = 'companies';

    public function __construct() {
    $this->middleware('guest:company');
    }

    protected function index()
    {
    return view('auth.company-register');
    }
    /**
    * Get a validator for an incoming registration request.
    *
    * @param array $data
    * @return \Illuminate\Contracts\Validation\Validator
    */
    protected function validator(array $data)
    {
    return Validator::make($data, [
    'company_name' => 'required|string|max:255',
    'manager_name' => 'required|string|max:255',
    'address' => 'required|string|max:255',
    'username' => 'required',
    'email' => 'required|string|email|max:255|unique:users',
    'about' => 'sometimes|min:10|max:2000',
    'password' => 'required|string|min:6|confirmed',
    ]);
    }

    /**
    * Create a new user instance after a valid registration.
    *
    * @param array $data
    * @return User
    */
    protected function create(array $data)
    {
    return Company::create([
    'company_name' => $data['company_name'],
    'manager_name' => $data['manager_name'],
    'address' => $data['address'],
    'username' => $data['username'],
    'about' => $data['about'],
    'email' => $data['email'],
    'password' => bcrypt($data['password']),
    ]);
    }
    }


    کسی از دوستان میدونه مشکل از کجاست؟


    تشکر.

  2. #2

    نقل قول: ثبت نام کاربر در جدول مجزا

    دوستان کسی نظری نداره؟!

  3. #3
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    2,360

    نقل قول: ثبت نام کاربر در جدول مجزا

    من هیوقت جدا نکردم تیبل های یوزر ور اینجوری نمیدونم مشکل چیه
    ولی به نظر میاد که پارامتر به تابع کریت ارسال نمیشه یه مقدار دیفالت بده به آرگومانت و توی تابع dd($data) بزن اول کریت ببین چی توشه

    protected function create(array $data = [] )
    {
    dd($data);



    من پیشنهاد میکنم ساختارت رو عوض کنی بجای اینکه 2 تا تایبل برای کاربر ها بسازی از همون 1 تیبل users استفاده کنی بعد یه user_type بهش اضافه کنی
    مشخصات شرکت رو هم بریزی توی یک تیبل جدا به اسم companies

    کلا تیبل یوزر برای احراز هویت کاربر هستش ربطی به شرکت یا غیر شرکت بودنش نداره اون رو میتونی تو تیبل دیگه بریزی

  4. #4

    نقل قول: ثبت نام کاربر در جدول مجزا

    نقل قول نوشته شده توسط plague مشاهده تاپیک
    من هیوقت جدا نکردم تیبل های یوزر ور اینجوری نمیدونم مشکل چیه
    ولی به نظر میاد که پارامتر به تابع کریت ارسال نمیشه یه مقدار دیفالت بده به آرگومانت و توی تابع dd($data) بزن اول کریت ببین چی توشه

    protected function create(array $data = [] )
    {
    dd($data);



    من پیشنهاد میکنم ساختارت رو عوض کنی بجای اینکه 2 تا تایبل برای کاربر ها بسازی از همون 1 تیبل users استفاده کنی بعد یه user_type بهش اضافه کنی
    مشخصات شرکت رو هم بریزی توی یک تیبل جدا به اسم companies

    کلا تیبل یوزر برای احراز هویت کاربر هستش ربطی به شرکت یا غیر شرکت بودنش نداره اون رو میتونی تو تیبل دیگه بریزی

    ممنون از پاسخ دامپ دیتا کردم الان مشخصات رو بهم برمیگردونه

    {"company_name":"sdfwef","manager_name":"ewfwef","  username":"wefwef","email":"ewfewf","updated_at":"  2017-05-25 14:02:18","created_at":"2017-05-25 14:02:18","id":2} 


    اما اگر به حالت اولیه برش گردونم این ارور رو میده :

    Type  error: Too few arguments to function  App\Http\Controllers\Auth\CompanyRegisterControlle  r::create(), 0 passed  and exactly 1 expected


  5. #5
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    2,360

    نقل قول: ثبت نام کاربر در جدول مجزا

    ظاهرا password نیست تو خروجی همچنین id توی لیست هست که نباید باشه !
    حالا از این که بگزریم خروجی باید یه آرایه باشه ولی شما یه رشته جیسون گزاشتی
    کلا عجیبه نتیجه دامپ یجای کارت مشکل داره

  6. #6

    نقل قول: ثبت نام کاربر در جدول مجزا

    نقل قول نوشته شده توسط plague مشاهده تاپیک
    ظاهرا password نیست تو خروجی همچنین id توی لیست هست که نباید باشه !
    حالا از این که بگزریم خروجی باید یه آرایه باشه ولی شما یه رشته جیسون گزاشتی
    کلا عجیبه نتیجه دامپ یجای کارت مشکل داره

    آی دی رو فکر میکنم برای این میگیره که این دومین یوزری هست که داره ثبت نام میکنه آی دی بصورت خودکار اضافه میشه که مشخص کنه یوزر توی کدوم ردیف ذخیره میشه.
    خروجی رو هم دقیقا طبی چیزی که روی مرورگر اومد من کپی کردم اینجا.

  7. #7
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    2,360

    نقل قول: ثبت نام کاربر در جدول مجزا

    احیانا آخر تابع create بعد از ریختن تو دیتابیس دامپ نکردی ؟
    شما باید اولش قبل از ریختن تو دیتبایس دامپ کنی
    آی دی رو فکر میکنم برای این میگیره که این دومین یوزری هست که داره ثبت نام میکنه آی دی بصورت خودکار اضافه میشه که مشخص کنه یوزر توی کدوم ردیف ذخیره میشه.
    وقتی توی دیتابیس نریخته آیدی هم تولید نمیشه و توی دامپ هم ظاهر نمیشه مگه اینکه اول ریخته باشی تو دیتبایس بعد دامپ کرده باشی که قرار نبوده اینکار رو بکنی

    همچنین مطمئن شو که داری همین کنترلر رو فراخانی میکنی نه کنترلر دیفالت ثبت نام رو

  8. #8

    نقل قول: ثبت نام کاربر در جدول مجزا

    نقل قول نوشته شده توسط plague مشاهده تاپیک
    احیانا آخر تابع create بعد از ریختن تو دیتابیس دامپ نکردی ؟
    شما باید اولش قبل از ریختن تو دیتبایس دامپ کنی

    وقتی توی دیتابیس نریخته آیدی هم تولید نمیشه و توی دامپ هم ظاهر نمیشه مگه اینکه اول ریخته باشی تو دیتبایس بعد دامپ کرده باشی که قرار نبوده اینکار رو بکنی

    همچنین مطمئن شو که داری همین کنترلر رو فراخانی میکنی نه کنترلر دیفالت ثبت نام رو
    سلام،
    دامپ کردم دیتا رو چیزی رو بر نمیگردونه! این نتیجه دامپ بود:

    کد HTML:
    []
    اگر کدهای create رو نگه دارم و دامپ کنم این ارور رو میده
    کد HTML:
    Undefined index: company_name

  9. #9

    نقل قول: ثبت نام کاربر در جدول مجزا

    سلام مجدد،

    من یکسری تغییرات در ساختار کنترلر دادم که الان به این شکل در اومده:

    <?php

    namespace App\Http\Controllers\Auth;

    use App\Company;
    use App\Http\Controllers\Controller;
    use Illuminate\Support\Facades\Validator;
    use Illuminate\Foundation\Auth\RegistersUsers;
    use Illuminate\Support\Facades\Input;
    use Illuminate\Http\Request;
    use Hash;

    class CompanyRegisterController extends Controller
    {

    /**
    * Where to redirect users after registration.
    *
    * @var string
    */
    protected $redirectTo = 'companies';

    public function __construct() {
    $this->middleware('guest:company');
    }

    protected function index()
    {
    return view('auth.company-register');
    }
    /**
    * Get a validator for an incoming registration request.
    *
    * @param array $data
    * @return \Illuminate\Contracts\Validation\Validator
    */
    protected function validator(array $data)
    {
    return Validator::make($data, [
    'company_name' => 'required|string|max:255',
    'manager_name' => 'required|string|max:255',
    'username' => 'required',
    'email' => 'required|string|email|max:255|unique:companies',
    'password' => 'required|string|min:6|confirmed',
    ]);
    }

    /**
    * Create a new user instance after a valid registration.
    *
    * @param array $data
    * @return User
    */
    protected function create(Request $request)
    {
    return Company::create([
    'company_name' => Input::get('company_name'),
    'manager_name' => Input::get('manager_name'),
    'username' => Input::get('username'),
    'email' => Input::get('email'),
    'password' => Hash::make($request->Password)
    ]);
    }
    }


    1.png 2.png

    منتها دو تا مشکل کوچیک هست،
    1- بعد از ثبت نام دامپ دیتا رو نشون میده که من اصلا کد dd ندارم توی کنترلم
    2- تمام فیلدهای ثبت نام توی دیتابیس ذخیره میشن بجز فیلد پسوورد! توی تصویر دامپ هم اگر نگاه کنید رمزعبور ذخیره نشده!

  10. #10
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    2,360

    نقل قول: ثبت نام کاربر در جدول مجزا

    خب چرا پسورد رو مثل بقیه اینپوت ها ننوشتی ؟
    Input::get('password')

    یا

    $request->input('password')

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •