سلام تو یه بخش از سایتم میخام اگه ویدئو گذاشتم ویدئو نمایش بده و اگه عکس گذاشتم عکس نمایش بده
دو تا فیلد تعریف کردم
image
video
دیفالت رو nullabel گذاشتم حالا هر کدوم خواستم اپلود میکنم
فقط نمیدونم تو بلید به چه شکل شرط بزارم
@if (اینجا نمیدونم چی بزارم)
<img src="{{ $news->image }}" alt="" class="img-fluid">
@else
<video width="500" controls preload>
<source src="{{ $news->video }}" type="video/mp4">
</video>
@endif
تو کنترلر به این شکل نوشتم ایراد داره ؟دیتا ثبت شد و اکیه فقط میخام بدونم مشکلی نداشته باشه
auth()->user()->news()->create($request->all());
یا به این شکل بنویسم ؟چون ویدئو هم هست نمیدونم به این روش چطوری بنویسم
if($request->hasFile('image')) {
$file = $request->file('image');
$ext = $file->getClientOriginalExtension();
$file_name = auth()->user()->id . '_' . time() . '.' . $ext;
$file->storeAs('/', $file_name, 'files');
$data['image'] = $file_name;
}
auth()->user()->update($data);
@codeLover
نمیدونم جدول دیتا شما برای ذخیره فایل تان به چه شکلی است ولی برای فرض مثال میشه همچین چیزی
سلام
دوست عزیز مشکل شما را میشه به روش های مختلف حل کرد؛ شما میتونید یه فیلد دیگه بر اساس اسم فایل عکس یا فیلم درست کنید و به راحتی بر اساس نوع فایل یکی از ان ها را نمایش بدید.
دستور شرطی برای نمایش اگر مقدار nullabel باشه:
@if (fileName == null)
@if (fileName == img)
<img src="{{ $news->image }}" alt="" class="img-fluid">
@else
<video width="500" controls preload>
<source src="{{ $news->video }}" type="video/mp4">
</video>
@else
<div></div>
@endif
دستور شرطی برای نمایش اگر مقدار nullabel نباشه:
@if(fileName == img)
<img src="{{ $news->image }}" alt="" class="img-fluid">
@else
<video width="500" controls preload>
<source src="{{ $news->video }}" type="video/mp4">
</video>
@endif
@shift.delete
ممنونم از شما 🌹
فیلد دیگه از نوع boolean باشه ؟
یا از طریق mime type منظورتونه ؟
بیشتر توضیح میدید؟
@codeLover
نمیدونم جدول دیتا شما برای ذخیره فایل تان به چه شکلی است ولی برای فرض مثال میشه همچین چیزی
@shift.delete
ممنونم
پس نیاز به دو فیلد یکی برای اسم فایل یکی پسوند فایل هست درسته ؟
من به این شکل نوشتم درسته ؟
$table->id();
$table->foreignId('user_id')->constrained()->cascadeOnDelete();
$table->string('name');
$table->string('slug')->unique();
$table->tinyInteger('status');
$table->text('description');
$table->string('filePath');
$table->string('fileName');
$table->timestamps();
کنترلر
$request->validate([
'name' => 'required',
'slug' => 'unique:counselings',
'status' => '',
'description' => 'required',
'filePath' => 'required',
'fileName' => ['mimetypes:video/mp4,image/jpeg,image/png,image/gif,audio/mp3,audio/mpeg']
]);
if (empty($request->slug)) {
$slug = SlugService::createSlug(Counseling::class, 'slug', $request->name);
} else {
$slug = SlugService::createSlug(Counseling::class, 'slug', $request->slug);
}
$request->merge(['slug' => $slug]);
if($request->hasFile('filePath')) {
$files = $request->file('filePath');
$ext = $files->getClientMimeType();
$file_name = auth()->user()->id . '_' . time() . '.' . $ext;
$files->storeAs('/', $file_name, 'files');
$data['filePath'] = $file_name;
}
auth()->user()->news()->create($request->all());
اینجا filename به چه صورت ذخیره کنم تو دیتابیس ؟ این روش اشتباه درسته ؟
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟