رفتن به مطلب
انجمن پشتیبانی لاراول ایران

هاست لاراول با پشتیبانی 24 ساعته و امکانات کامل از مدیرهاست

Amir_Kh1984

کاربر
  • تعداد ارسال ها

    33
  • تاریخ عضویت

  • آخرین بازدید

  • Days Won

    9

Amir_Kh1984 last won the day on سپتامبر 30 2021

Amir_Kh1984 had the most liked content!

اعتبار در انجمن

17 خوب

درباره Amir_Kh1984

  • درجه
    کاربر انجمن

آخرین بازدید کنندگان نمایه

1,083 بازدید کننده نمایه
  1. سلام می توانید از لینک های زیر استفاده کنید: https://ditty.ir/posts/repository-pattern-in-laravel-part-1/XOjjn https://ditty.ir/posts/repository-pattern-in-laravel-part-2/5d1En موفق باشید.
  2. سلام از کدهای زیر به ترتیب استفاده کنید: composer update composer require laravel/ui php artisan ui vue --auth امیدوارم که این پاسخ مشکل را بر طرف کرده باشد. موفق باشید.
  3. سلام احتمالا شما فایل CSS مربوط به Bootstrap را به صفحه اضافه نکردید.
  4. سلام می توانید از این آموزش استفاده کنید: http://jsmaster.ir/آموزش-اتصال-laravel-به-شبکه-پرداخت-پِی/
  5. سلام ابتدا وارد Command Prompt شوید و با توجه به مسیر نصب WampServer دستور زیر را وارد کنید: cd C:\wamp64\www حال با استفاده از دستور زیر پروژه جدید به نام blog ایجاد کنید: laravel new blog البته می توانید با استفاده از Composer یک پروژه ایجاد کنید: composer create-project --prefer-dist laravel/laravel blog ظاهرا شما نام پروژه را وارد نکردید. امیدوارم که این پاسخ مشکل شما را حل کرده باشد. موفق باشید.
  6. سلام ابتدا وارد مدل Order شده و متد products را بصورت زیر ویرایش کنید: class Order extends Model { public function products() { return $this->belongsToMany(Product::class) ->withPivot('quantity'); } } سپس متد orders در مدل Product را ویرایش کنید: class Product extends Model { public function orders() { return $this->belongsToMany(Order::class)->withPivot('quantity'); } } حال برای درج در جدول محور (pivot) بدین صورت عمل کنید: $order = Order::create($orderData); $productID = is_array($request->get('productID')) ? $request->get('productID') : []; $quantityID = is_array($request->get('quantityID')) ? $request->get('quantityID') : []; $attatchData = array(); foreach ($i = 0; $i < count($productID); $i++) $attatchData[$productID[$i]] = ['quantity' => $quantityID[$i]]; /* $productID = [1, 2, 3] $quantityID = [20, 40, 50] $attatchData = [ '1' => [ 'quantity' => 20], '2' => [ 'quantity' => 40], '3' => [ 'quantity' => 50], ]; */ $order->products()->attach($attatchData); ابتدا باید مقادیر productID و quantityID را در آرایه جدیدی به نام attatchData بدین صورت قرار دهید ؛ یک آرایه انجمنی با کلید های productID و مقادیری بصورت آرایه ( [ quantity' => 20'] ) . با فرض اینکه محصول با شناسه 1 دارای تعداد 20 باشد. ( محصولات با شناسه های 2 و 3 به ترتیب دارای مقادیر 40و 50) بعد از پر کردن آرایه می توانید از متدهای ()attach و ()sync استفاده کنید. امیدوارم که این پاسخ به شما کمک کرده باشد.
  7. در مرحله اول ثبت نام شما باید نام، موبایل و ایمیل را از کاربر دریافت کنید تا ثبت نام انجام شود. کد تایید ثبت نام هم بصورت تصادفی ایجاد و در یک session ذخیره می شود. در انتهای متد ()create در کلاس RegisterController نشست را ایجاد نمایید. یک session با نام user-xxx و مقدار موبایل کاربر ایجاد می شود.(xxx شناسه (id) کاربر است) protected function create(array $data) { $user = User::create([ 'name' => $data['name'], 'phone' => $data['phone'], 'email' => $data['email'], 'password' => Hash::make($data['password']), ]); session()->put('user-' . $user->id, $data['phone']); return $user; } حال کاربر باید کد تایید را در فرم مربوطه وارد نمایید. فرض بر آن است که مسیر (Route) مربوطه را در فایل web.php بصورت زیر تعریف کرده باشید. Route::get('/register/verify/{user}', 'UserController@verify')->middleware('check-verify')->name('register.verify'); در میان افزار CheckVerify باید بررسی کنید که آیا کاربر در مدت زمان لازم کد تایید را وارد کرده یا خیر. با اندکی تغییر در کد قبلی (تابع ()handle ) می توانید این کار را انجام دهید. پیشنهاد می کنم که خودتان کد نویسی کنید تا مفاهیم را بهتر یاد بگیرید. موفق باشید.
  8. سلام در صورتیکه بخواهید فیلد phome به جدول users اضافه کنید باید متغیر fillable$ در کلاس User را بصورت زیر اصلاح کنید. protected $fillable = [ 'name', 'email', 'password', 'phone' ]; سپس وارد کلاس App\Http\Controllers\Auth\RegisterController شوید و متد ()create را ویرایش کنید: return User::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => Hash::make($data['password']), 'phone' => $data['family'], ]); نیازی به استفاده از میان افزار Midlleware نیست.اصولا زمانی که بخواهید شرایط خاصی را بررسی کنید از میان افزار استفاده می کنید. برای مثال اگر شما بخواهید کاربران سایت شما در مدت زمان یک ساعت فقط یک دیدگاه برای یک پست خاص ارسال کنند می توانید از یک میان افزار به نام AllowComment بصورت زیر استفاده کنید: namespace App\Http\Middleware; use Carbon\Carbon; use Closure; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class AllowComment { public function handle($request, Closure $next) { if (auth()->check()) { //dd($request->post_id); $post_id = $request->post_id; $max_count =1; $max_time = 60; $first = Carbon::now()->subMinutes($max_time); $count = auth()->user()->comments() ->where('post_id', $post_id) ->where('created_at', '>=', $first)->count(); if ($count < $max_count) return $next($request); } $msg ='your error message'; return redirect()->back()->with('invalid', $msg); } } امیدوارم که این پاسخ به شما کمک کرده باشد. موفق باشید.
  9. سلام برای حذف می توانید از تابع ()unset بصورت زیر استفاده کنید. public function drop(Request $request) { $cart = session()->get('cart'); $id = $request->id; if(isset($cart[$id])) { unset($cart[$id]); // update session session()->put('cart', $cart); if (!sizeof($cart)) { session()->put('cart', []); session()->forget('cart'); } return true; } return false; } از تابع ()forget برای حذف کل session استفاده می شود. برای حذف یک عنصر از session کافی است از تابع ()unset استفاده کنید.
  10. سلام شما باید از تابع ()isset استفاده کنید: if(! isset(session()->get('total')[33])) { } کلا در زبان PHP برای بررسی وجود/عدم وجود یک متغیر باید از تابع ()isset استفاده کنید.
  11. سلام همانطور که گفتم شما باید روابط یک به چند را برای جداول دسته بندی (categories) و تصاویر (images) و همچنین تصویر و برچسب (tags) را پیاده سازی نمایید. بعد از پیاده سازی آنها از کد زیر استفاده کنید تا در یک جدول مقادیر id و name و تصاویر و هم چنین برچسب ها(بدون تکرار) را نمایش دهد. <table> <tr> <th>id</th> <th>name</th> <th>images</th> <th>tags</th> </tr> @foreach($categories as $category) <tr> <td>{{ $category->id }}</td> <td>{{ $category->name }}</td> <td> @php $pics = []; @endphp @foreach($category->images()->pluck('src') as $src) $pics[] = $src; @endforeach {{ implode(',', $pics) }} </td> <td> @php $tags = []; @endphp @foreach($category->images()->get() as $image) @foreach($image->tags()->pluck('name') as $name) $tags[] = $name; @endforeach @endforeach {{ get_tags($tags) }} </td> </tr> @endforeach </table> تابع برای حذف عناصر تکراری از یک آرایه بصورت زیر تعریف شده است: function get_tags($tags) { $result = array(); for ($tags as $tag) { if (!in_array($tag, $result)) $result[] = $tag; } return implode(',', $result); } امیدوارم که این پاسخ مشکل شما را برطرف کرده باشد. موفق باشید.
  12. سلام لطفا کدهای سمت server را هم قرار دهید. در سمت server شما باید مقادیر success و data را ارسال کنید تا به آنها دسترسی داشته باشید. اگر شما بخواهید مقدار value و id را بازیابی کنید نیازی به ajax ندارید. به راحتی با یک دستور ساده jQuery می تواندید هر اطلاعاتی از صفحه را بدست آورید. اصولا زمانی از ajax استفاده می کنید که بخواهید اطلاعاتی را از بانک اطلاعاتی یا یک منبع خارجی (فایل json یا html و... ) استخراج کنید. وقتی شما id هر سطری را بصورت ایستا (static) به سطر (tr) نسبت دهید برای بازیابی آن به ajax نیازی نیست. اگر راجب هدفتون بیشتر توضیح دهید فکر می کنم بهتر بتونم کمک کنم. $('.quantity').change(function (e) { e.preventDefault(); var $this = $(this); var value = $this.val(); var id = $this.parents('tr').attr('id'); alert('value:' + value + ' id:' + id); }); موفق باشید.
  13. سلام اگر بخواهید برای یک دسته بندی (category) خاص تمامی تصاویر مرتبط با انرا بازیابی کنید باید از رابطه یک به چند بین دسته بندی و تصویر استفاده کنید. همین طور برای تصویر و برچسب (tag). اگر هدفتان بازیابی تمامی برچسب های متعلق به یک دسته بندی خاص باشد(جدول تصویر به عنوان واسط) می توانید از رابطه HasManyThrough در مدل Category استفاده کنید. البته می توانید از هر دوی آنها بصورت همزمان استفاده کنید.در حالت کلی بسته به نیازتان می توانید از این روابط استفاده کنید. برای مثال اگر جدول categories شما ستون های id، name، slug و parent داشته باشد و بخواهید از دسته بندی های تو در تو (یک سطحی و یا چند سطحی) استفاده کنید، می توانید یک رابطه یک به چند در داخل مدلCategory تعریف کنید. فرضا اگر بخواهید تمام دسته بندی هایی که زیر مجموعه یک دسته بندی خاص هستند را بدست آورید می توانید تابع children را بصورت زیر تعریف کنید: public function children () { return $this->hasMany(Category::class, 'parent'); } در صورتیکه شما برای یک دسته بندی خاص تابع را فرخوانی کنید، تمام دسته بندی هایی که مقدار فیلد parent آنها با فیلد id دسته بندی مورد نظر برابر باشد، بازیابی می شود. در قطعه کد زیر فرض بر آن است که هر دسته بندی حداکثر یک زیر مجموعه دارد.(پیاده سازی دسته بندی های چند سطحی با استفاده از توابع بازگشتی امکان پذیر است که خارج از حوصله این پست است) <ul> @foreach($categories As $category) <li id='{{ $category->id }}'>{{ $category->name }} @if($category->children) @php $sub_cats = $category->children()->select('id', 'name')->get(); @endphp <ul> @foreach($sub_cats As $sub_cat) <li id='{{ $sub_cat->id }}'>{{ $sub_cat->name }}</li> @endforeach </ul> @endif </li> @endforeach </ul> امیدوارم که این پاسخ مشکل شما را برطرف کرده باشد. موفق باشید.
  14. سلام برای راست چین کردن قالب شما باید دانش کافی در زمینه CSS داشته باشید. اگر از Bootstrap استفاده می کنید باید فایل راست چین شده آن را به صفحه خود اضافه کنید.(البته بعد از اضافه کردن فایل bootstrap.min.css) با یک جستجو می توانید فایل راست چین شده بوت استرپ را پیدا کنید. ثانیا شما باید خود قالب را راست چین نمایید. معمولا اگر خاصیت float عنصری را به right تغییر دهید و تنظیماتی از این قبیل (تغییر margin ، padding ، border-radius و ..... ) به راحتی می توانید قالب را راستچین نمایید. یک فایل راست چین شده بوت استرپ را برای شما قرار دادم. امیدوارم که این پاسخ مشکل شما را حل کرده باشد. موفق باشید. rtl.zip
  15. ابتدا حافظه cache مرورگر را پاک کنید. php artisan config:cache در صورت عدم حل مشکل، فرم را در جای دیگری (صفحه دیگر) قرار دهید و مجددا امتحان کنید. یا اینکه به جای متد post از متد get استفاده کنید و نتیجه را بررسی کنید. کلا باید با سعی و خطا مشکل را حل کنید. بازهم تاکید می کنم که فرم شما هیچ مشکلی نداره!!! مشکل از جای دیگه است..... درگیر شدن با خطا ها لازمه یادگیری و کسب مهارت در برنامه نویسی است.....
×
×
  • جدید...