اذهب إلى المحتوى

السؤال

نشر (معدل)

اردت اضافه حقل لاضافه صوره  ولكن يتم حفظه في قاعده البيانات باسم او رابط للصوره وليس المسار في public storage photo_path ماافي صور انحفظت في السيرفر ماايمدي تنعرض

هذا عند عمل تسجيل مستخدم جديد اضافه حقل لاضافه صوره عند التسجيل لا اجد اي صوره في المسار storage 

سويت storage link تطلع الصوره تمام وتنحفظ اذا دخلت ع الداشبورد الخاصه ب جيت ستريم وعملت تحرير للصوره

 

تم التعديل في بواسطة عبدالرحمن عبدالله14

Recommended Posts

  • 0
نشر

قم بإضافة الحقل في نموذج الـ Livewire عبر تحديث النموذج الذي تستخدمه لتحميل الصورة فأنت لم تقدم معلومات أو شيفرة توضح النموذج الذي تعمل عليه، حسنا لا بأس، قم بإضافة الحقل كما أشرنا على هذا النحو:

public $photo;

protected $rules = [
       'photo' => 'image|max:1024'
];

ثم أضف حقل الإدخال لتحميل الصورة في ملف الـ Blade:

<input type="file" wire:model="photo">

وبعد أن يتم تحميل الصورة، استخدم الوظيفة store لحفظها في public/storage، ثم احفظ الرابط في قاعدة البيانات وهذا مثال عملي على ذلك:

public function store()
{
       $this->validate();

       if ($this->photo) {
           $path = $this->photo->store('photos', 'public');
           Model::create([
               'photo_path' => $path,
           ]);
       }
}

وعندما تريد عرض الصور من قاعدة البيانات، استخدم الدالة Storage::url() للحصول على الرابط العام للصورة:

<img src="{{ Storage::url($model->photo_path) }}" alt="صورة">

ثم قم بتشغيل الأمر:

php artisan storage:link

 لإنشاء الرابط الرمزي.

  • 0
نشر
بتاريخ 11 دقائق مضت قال عبد الوهاب بومعراف:

قم بإضافة الحقل في نموذج الـ Livewire عبر تحديث النموذج الذي تستخدمه لتحميل الصورة فأنت لم تقدم معلومات أو شيفرة توضح النموذج الذي تعمل عليه، حسنا لا بأس، قم بإضافة الحقل كما أشرنا على هذا النحو:

public $photo;

protected $rules = [
       'photo' => 'image|max:1024'
];

ثم أضف حقل الإدخال لتحميل الصورة في ملف الـ Blade:

<input type="file" wire:model="photo">

وبعد أن يتم تحميل الصورة، استخدم الوظيفة store لحفظها في public/storage، ثم احفظ الرابط في قاعدة البيانات وهذا مثال عملي على ذلك:

public function store()
{
       $this->validate();

       if ($this->photo) {
           $path = $this->photo->store('photos', 'public');
           Model::create([
               'photo_path' => $path,
           ]);
       }
}

وعندما تريد عرض الصور من قاعدة البيانات، استخدم الدالة Storage::url() للحصول على الرابط العام للصورة:

<img src="{{ Storage::url($model->photo_path) }}" alt="صورة">

ثم قم بتشغيل الأمر:

php artisan storage:link

 لإنشاء الرابط الرمزي.

اعلم بهذي الطريقه اليدويه انا اقصد هل تتم عبر jetstream مثل لقد اضفت حقول ثانيه مثل اسم المستخدم والعنوان بمجرب الذهاب الى ملف forify create new user واضافه الحقول تعمل جيداً ولكن المشكله في الصوره 

بتاريخ الآن قال عبدالرحمن عبدالله14:

اعلم بهذي الطريقه اليدويه انا اقصد هل تتم عبر jetstream مثل لقد اضفت حقول ثانيه مثل اسم المستخدم والعنوان بمجرب الذهاب الى ملف forify create new user واضافه الحقول تعمل جيداً ولكن المشكله في الصوره 

 public function create(array $input): User

    {

 

        Validator::make($input, [

            'name' => ['required', 'string', 'max:255'],

            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],

            'password' => $this->passwordRules(),

            'profile_photo_path' => ['required','image','max:1024'],

            'terms' => Jetstream::hasTermsAndPrivacyPolicyFeature() ? ['accepted', 'required'] : '',

        ])->validate();






 

        return User::create([

            'name' => $input['name'],

            'email' => $input['email'],

            'profile_photo_path'=> $input['profile_photo_path'],

            'password' => Hash::make($input['password']),

        ]);

    } هنا لقد قمت باضافه الحقل profile_photo_path لقد تخزن في قواعد البيانات الامتداد ولكن الصوره لم تكن موجود في السيرفر لعرضها

   <div class="mt-4">

                <x-label class="text-right" for="الصوره الشخصيه" value="{{ __('الصوره الشخصيه') }}" />

                <x-input id="profile_photo_path" class="block mt-1 w-full" type="file" name="profile_photo_path" :value="old('profile_photo_path')" required autocomplete="profile_photo_path"/>

            </div>

  • 0
نشر
بتاريخ 16 دقائق مضت قال عبدالرحمن عبدالله14:

اعلم بهذي الطريقه اليدويه انا اقصد هل تتم عبر jetstream مثل لقد اضفت حقول ثانيه مثل اسم المستخدم والعنوان بمجرب الذهاب الى ملف forify create new user واضافه الحقول تعمل جيداً ولكن المشكله في الصوره 

 public function create(array $input): User

    {

 

        Validator::make($input, [

            'name' => ['required', 'string', 'max:255'],

            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],

            'password' => $this->passwordRules(),

            'profile_photo_path' => ['required','image','max:1024'],

            'terms' => Jetstream::hasTermsAndPrivacyPolicyFeature() ? ['accepted', 'required'] : '',

        ])->validate();






 

        return User::create([

            'name' => $input['name'],

            'email' => $input['email'],

            'profile_photo_path'=> $input['profile_photo_path'],

            'password' => Hash::make($input['password']),

        ]);

    } هنا لقد قمت باضافه الحقل profile_photo_path لقد تخزن في قواعد البيانات الامتداد ولكن الصوره لم تكن موجود في السيرفر لعرضها

   <div class="mt-4">

                <x-label class="text-right" for="الصوره الشخصيه" value="{{ __('الصوره الشخصيه') }}" />

                <x-input id="profile_photo_path" class="block mt-1 w-full" type="file" name="profile_photo_path" :value="old('profile_photo_path')" required autocomplete="profile_photo_path"/>

            </div>

خاصية تعديل الصورة الشخصية للمستخدمين متاحة كخاصية إفتراضية في Jetstream، لا تحتاج إلى إنشائها من الصفر فقط عليك تفعيلها من خلال ملف الإعدادات: config/jetstream.php ستجد بداخل المفتاح features السطر التالي:

Features::profilePhotos(),

مُعلق قم بإزالة التعليق.

ثم ستتمكن من التعديل على الصورة الشخصية من خلال صفحة ال profile، إن أردت شيء مغاير يُمكنك الإشارة.

  • 0
نشر
بتاريخ 4 دقائق مضت قال سمير عبود:

خاصية تعديل الصورة الشخصية للمستخدمين متاحة كخاصية إفتراضية في Jetstream، لا تحتاج إلى إنشائها من الصفر فقط عليك تفعيلها من خلال ملف الإعدادات: config/jetstream.php ستجد بداخل المفتاح features السطر التالي:

Features::profilePhotos(),

مُعلق قم بإزالة التعليق.

ثم ستتمكن من التعديل على الصورة الشخصية من خلال صفحة ال profile، إن أردت شيء مغاير يُمكنك الإشارة.

نعم التعديل يعمل ولكن انا عملت الحقل هذا في تسجيل مستخدم جديد لاتخزن في السيرفر امتداد الصوره موجود في قواعد البيانات ولكن لم يخزن عندي في الامتداد storage علماً قمت ب storage link  ولكن لايوجد اي صوره في الملفين public or storage

  • 0
نشر
بتاريخ 12 دقائق مضت قال عبدالرحمن عبدالله14:

نعم التعديل يعمل ولكن انا عملت الحقل هذا في تسجيل مستخدم جديد لاتخزن في السيرفر امتداد الصوره موجود في قواعد البيانات ولكن لم يخزن عندي في الامتداد storage علماً قمت ب storage link  ولكن لايوجد اي صوره في الملفين public or storage

تحتاج إلى إضافة الحقل لإستمارة التسجيل:

<div class="mt-4">
  <x-label for="photo" value="{{ __('Photo') }}" />
  <x-input id="photo" class="block mt-1 w-full" type="file" name="photo" />
</div>

تحتاج التعديل على عُنصر الإستمارة بإضافة:

<form method="POST" action="{{ route('register') }}" enctype="multipart/form-data">
                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

بعدها تحتاج إلى التعديل على التابع المسؤول عن إضافة السجل:

بإضافة التحقق:

Validator::make($input, [
  'name' => ['required', 'string', 'max:255'],
  'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
  'password' => $this->passwordRules(),
  'terms' => Jetstream::hasTermsAndPrivacyPolicyFeature() ? ['accepted', 'required'] : '',
  'photo' => ['nullable', 'mimes:jpg,jpeg,png', 'max:1024'], // إضافة التحقق
])->validate();

ثم بعد إنشاء المستخدم تقوم بتعديل الصورة في حالة ما إذا كان الطلب به ملف صورة:

$user = User::create([
  'name' => $input['name'],
  'email' => $input['email'],
  'password' => Hash::make($input['password']),
]);

if (isset($input['photo'])) {
  $user->updateProfilePhoto($input['photo']);
}

return $user;

تستطيع حفظ الصورة بنفسك قبل حفظ المستخدم، لكن بإمكانك أيضاً إستخدام نفس الخاصية الموجودة في التعديل، أي التابع updateProfilePhoto كما هو موضح أعلاه، التابع سيقوم بحفظ الصورة في المجلد storage و يُعدل على حقل الصورة في قاعدة البيانات أيضاً.

  • 0
نشر
بتاريخ منذ ساعة مضت قال سمير عبود:

تحتاج إلى إضافة الحقل لإستمارة التسجيل:

<div class="mt-4">
  <x-label for="photo" value="{{ __('Photo') }}" />
  <x-input id="photo" class="block mt-1 w-full" type="file" name="photo" />
</div>

تحتاج التعديل على عُنصر الإستمارة بإضافة:

<form method="POST" action="{{ route('register') }}" enctype="multipart/form-data">
                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

بعدها تحتاج إلى التعديل على التابع المسؤول عن إضافة السجل:

بإضافة التحقق:

Validator::make($input, [
  'name' => ['required', 'string', 'max:255'],
  'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
  'password' => $this->passwordRules(),
  'terms' => Jetstream::hasTermsAndPrivacyPolicyFeature() ? ['accepted', 'required'] : '',
  'photo' => ['nullable', 'mimes:jpg,jpeg,png', 'max:1024'], // إضافة التحقق
])->validate();

ثم بعد إنشاء المستخدم تقوم بتعديل الصورة في حالة ما إذا كان الطلب به ملف صورة:

$user = User::create([
  'name' => $input['name'],
  'email' => $input['email'],
  'password' => Hash::make($input['password']),
]);

if (isset($input['photo'])) {
  $user->updateProfilePhoto($input['photo']);
}

return $user;

تستطيع حفظ الصورة بنفسك قبل حفظ المستخدم، لكن بإمكانك أيضاً إستخدام نفس الخاصية الموجودة في التعديل، أي التابع updateProfilePhoto كما هو موضح أعلاه، التابع سيقوم بحفظ الصورة في المجلد storage و يُعدل على حقل الصورة في قاعدة البيانات أيضاً.

شكرا لقد نسيت enctype

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...