merge from master
This commit is contained in:
parent
4eb0456e7c
commit
cd690289dd
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
|
||||
namespace Webkul\Core\Contracts\Validations;
|
||||
|
||||
use Illuminate\Contracts\Validation\Rule;
|
||||
|
||||
class AlphaNumericSpace implements Rule
|
||||
{
|
||||
/**
|
||||
* Determine if the validation rule passes.
|
||||
*
|
||||
* @param string $attribute
|
||||
* @param mixed $value
|
||||
* @return bool
|
||||
*/
|
||||
public function passes($attribute, $value)
|
||||
{
|
||||
return preg_match('/^[a-zA-Z0-9\s]+$/', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation error message.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function message()
|
||||
{
|
||||
return trans('core::validation.alpha-numeric-space');
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
|
||||
namespace Webkul\Core\Contracts\Validations;
|
||||
|
||||
use Illuminate\Contracts\Validation\Rule;
|
||||
|
||||
class PhoneNumber implements Rule
|
||||
{
|
||||
/**
|
||||
* Determine if the validation rule passes.
|
||||
*
|
||||
* @param string $attribute
|
||||
* @param mixed $value
|
||||
* @return bool
|
||||
*/
|
||||
public function passes($attribute, $value)
|
||||
{
|
||||
return preg_match('%^(?:(?:\(?(?:00|\+)([1-4]\d\d|[1-9]\d?)\)?)?[\-\.\ \\\/]?)?((?:\(?\d{1,}\)?[\-\.\ \\\/]?){0,})(?:[\-\.\ \\\/]?(?:#|ext\.?|extension|x)[\-\.\ \\\/]?(\d+))?$%i', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation error message.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function message()
|
||||
{
|
||||
return trans('core::validation.phone-number');
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'alpha-numeric-space' => 'The :attribute can only accept alpha, numeric and spaces.',
|
||||
'code' => 'The :attribute must be valid.',
|
||||
'decimal' => 'The :attribute must be valid.',
|
||||
'phone-number' => 'The :attribute must be valid phone number.',
|
||||
'slug' => 'The :attribute must be valid slug.',
|
||||
];
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'path-hint' => [
|
||||
'template' => 'Template',
|
||||
'parents' => 'Parents'
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'path-hint' => [
|
||||
'template' => 'Template',
|
||||
'parents' => 'Parents'
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'path-hint' => [
|
||||
'template' => 'Template',
|
||||
'parents' => 'Parents'
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
<?php
|
||||
|
||||
namespace Webkul\Customer\Http\Requests;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Webkul\Core\Contracts\Validations\AlphaNumericSpace;
|
||||
use Webkul\Core\Contracts\Validations\PhoneNumber;
|
||||
use Webkul\Customer\Rules\VatIdRule;
|
||||
|
||||
class CustomerAddressRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'company_name' => [new AlphaNumericSpace],
|
||||
'first_name' => ['required', new AlphaNumericSpace],
|
||||
'last_name' => ['required', new AlphaNumericSpace],
|
||||
'address1' => ['required', 'array'],
|
||||
'address1.*' => ['required', new AlphaNumericSpace],
|
||||
'country' => ['required', 'alpha'],
|
||||
'state' => ['required', 'alpha'],
|
||||
'city' => ['required'],
|
||||
'postcode' => ['required', 'numeric'],
|
||||
'phone' => ['required', new PhoneNumber],
|
||||
'vat_id' => [new VatIdRule()],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
<?php
|
||||
|
||||
namespace Webkul\Customer\Http\Requests;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Webkul\Core\Contracts\Validations\AlphaNumericSpace;
|
||||
|
||||
class CustomerProfileRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
$id = auth()->guard('customer')->user()->id;
|
||||
|
||||
return [
|
||||
'first_name' => ['required', new AlphaNumericSpace],
|
||||
'last_name' => ['required', new AlphaNumericSpace],
|
||||
'gender' => 'required|in:Other,Male,Female',
|
||||
'date_of_birth' => 'date|before:today',
|
||||
'email' => 'email|unique:customers,email,' . $id,
|
||||
'password' => 'confirmed|min:6|required_with:oldpassword',
|
||||
'oldpassword' => 'required_with:password',
|
||||
'password_confirmation' => 'required_with:password',
|
||||
'image.*' => 'mimes:bmp,jpeg,jpg,png,webp',
|
||||
'phone' => 'numeric',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
<div class="account-item-card mt-15 mb-15">
|
||||
<div class="media-info">
|
||||
@php
|
||||
$image = $item->product->getTypeInstance()->getBaseImage($item);
|
||||
@endphp
|
||||
|
||||
<img class="media" src="{{ $image['small_image_url'] }}" alt="" />
|
||||
|
||||
<div class="info">
|
||||
<div class="product-name">
|
||||
{{ $item->product->name }}
|
||||
|
||||
@if (isset($item->additional['attributes']))
|
||||
<div class="item-options">
|
||||
@foreach ($item->additional['attributes'] as $attribute)
|
||||
<b>{{ $attribute['attribute_name'] }} : </b> {{ $attribute['option_label'] }}
|
||||
</br>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
@if ($visibility ?? false)
|
||||
<div class="mb-2">
|
||||
<span class="fs16">
|
||||
{{ __('shop::app.customer.account.wishlist.visibility') }} :
|
||||
|
||||
<span class="badge badge-sm {{ $item->shared ? 'badge-success' : 'badge-danger' }}">
|
||||
{{ $item->shared ? __('shop::app.customer.account.wishlist.public') : __('shop::app.customer.account.wishlist.private') }}
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<span class="stars" style="display: inline">
|
||||
@for ($i = 1; $i <= $reviewHelper->getAverageRating($item->product); $i++)
|
||||
<span class="icon star-icon"></span>
|
||||
@endfor
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="operations">
|
||||
<form id="wishlist-{{ $item->id }}" action="{{ route('customer.wishlist.remove', $item->id) }}" method="POST">
|
||||
@method('DELETE')
|
||||
|
||||
@csrf
|
||||
</form>
|
||||
|
||||
@auth('customer')
|
||||
<a
|
||||
class="mb-50"
|
||||
href="javascript:void(0);"
|
||||
onclick="document.getElementById('wishlist-{{ $item->id }}').submit();">
|
||||
<span class="icon trash-icon"></span>
|
||||
</a>
|
||||
@endauth
|
||||
|
||||
<a href="{{ route('customer.wishlist.move', $item->id) }}" class="btn btn-primary btn-md">
|
||||
{{ __('shop::app.customer.account.wishlist.move-to-cart') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="horizontal-rule mb-10 mt-10"></div>
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
@extends('shop::layouts.master')
|
||||
|
||||
@section('page_title')
|
||||
{{ __('shop::app.customer.account.wishlist.customer-name', ['name' => $customer->name]) }}
|
||||
@endsection
|
||||
|
||||
@section('content-wrapper')
|
||||
@inject ('reviewHelper', 'Webkul\Product\Helpers\Review')
|
||||
|
||||
<div class="account-layout">
|
||||
<div class="account-head mb-15">
|
||||
<span class="account-heading">{{ __('shop::app.customer.account.wishlist.customer-name', ['name' => $customer->name]) }}</span>
|
||||
|
||||
<div class="horizontal-rule"></div>
|
||||
</div>
|
||||
|
||||
<div class="account-items-list">
|
||||
@foreach ($items as $item)
|
||||
@include('shop::customers.account.wishlist.wishlist-product', ['item' => $item])
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'enter-attribute' => 'Enter :attribute',
|
||||
'select-attribute' => 'Select :attribute',
|
||||
];
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'enter-attribute' => 'Enter :attribute',
|
||||
'select-attribute' => 'Select :attribute',
|
||||
];
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'enter-attribute' => 'Enter :attribute',
|
||||
'select-attribute' => 'Select :attribute',
|
||||
];
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'enter-attribute' => 'Enter :attribute',
|
||||
'select-attribute' => 'Select :attribute',
|
||||
];
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'enter-attribute' => 'Enter :attribute',
|
||||
'select-attribute' => 'Select :attribute',
|
||||
];
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,65 @@
|
|||
/*!
|
||||
* Bootstrap v3.4.1 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2019 Twitter, Inc.
|
||||
* Licensed under the MIT license
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Sizzle CSS Selector Engine v2.3.6
|
||||
* https://sizzlejs.com/
|
||||
*
|
||||
* Copyright JS Foundation and other contributors
|
||||
* Released under the MIT license
|
||||
* https://js.foundation/
|
||||
*
|
||||
* Date: 2021-02-16
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Vue.js v2.6.14
|
||||
* (c) 2014-2021 Evan You
|
||||
* Released under the MIT License.
|
||||
*/
|
||||
|
||||
/*!
|
||||
* accounting.js v0.4.1
|
||||
* Copyright 2014 Open Exchange Rates
|
||||
*
|
||||
* Freely distributable under the MIT license.
|
||||
* Portions of accounting.js are inspired or borrowed from underscore.js
|
||||
*
|
||||
* Full details and documentation:
|
||||
* http://openexchangerates.github.io/accounting.js/
|
||||
*/
|
||||
|
||||
/*!
|
||||
* jQuery JavaScript Library v3.6.0
|
||||
* https://jquery.com/
|
||||
*
|
||||
* Includes Sizzle.js
|
||||
* https://sizzlejs.com/
|
||||
*
|
||||
* Copyright OpenJS Foundation and other contributors
|
||||
* Released under the MIT license
|
||||
* https://jquery.org/license
|
||||
*
|
||||
* Date: 2021-03-02T17:08Z
|
||||
*/
|
||||
|
||||
/*!
|
||||
* vue-carousel v0.18.0-alpha
|
||||
* (c) 2019 todd.beauchamp@ssense.com
|
||||
* https://github.com/ssense/vue-carousel#readme
|
||||
*/
|
||||
|
||||
/**
|
||||
* vee-validate v2.2.15
|
||||
* (c) 2019 Abdelrahman Awad
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
/**
|
||||
* vue-class-component v7.0.1
|
||||
* (c) 2015-present Evan You
|
||||
* @license MIT
|
||||
*/
|
||||
|
|
@ -0,0 +1 @@
|
|||
(()=>{"use strict";var e,r,t,o={},n={};function i(e){var r=n[e];if(void 0!==r)return r.exports;var t=n[e]={id:e,exports:{}};return o[e].call(t.exports,t,t.exports,i),t.exports}i.m=o,e=[],i.O=(r,t,o,n)=>{if(!t){var f=1/0;for(c=0;c<e.length;c++){for(var[t,o,n]=e[c],l=!0,u=0;u<t.length;u++)(!1&n||f>=n)&&Object.keys(i.O).every((e=>i.O[e](t[u])))?t.splice(u--,1):(l=!1,n<f&&(f=n));if(l){e.splice(c--,1);var a=o();void 0!==a&&(r=a)}}return r}n=n||0;for(var c=e.length;c>0&&e[c-1][2]>n;c--)e[c]=e[c-1];e[c]=[t,o,n]},i.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return i.d(r,{a:r}),r},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(e,o){if(1&o&&(e=this(e)),8&o)return e;if("object"==typeof e&&e){if(4&o&&e.__esModule)return e;if(16&o&&"function"==typeof e.then)return e}var n=Object.create(null);i.r(n);var f={};r=r||[null,t({}),t([]),t(t)];for(var l=2&o&&e;"object"==typeof l&&!~r.indexOf(l);l=t(l))Object.getOwnPropertyNames(l).forEach((r=>f[r]=()=>e[r]));return f.default=()=>e,i.d(n,f),n},i.d=(e,r)=>{for(var t in r)i.o(r,t)&&!i.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},i.e=()=>Promise.resolve(),i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={929:0,166:0,362:0};i.O.j=r=>0===e[r];var r=(r,t)=>{var o,n,[f,l,u]=t,a=0;if(f.some((r=>0!==e[r]))){for(o in l)i.o(l,o)&&(i.m[o]=l[o]);if(u)var c=u(i)}for(r&&r(t);a<f.length;a++)n=f[a],i.o(e,n)&&e[n]&&e[n][0](),e[f[a]]=0;return i.O(c)},t=self.webpackChunk=self.webpackChunk||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})()})();
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
<div class="col-12 lg-card-container list-card product-card row">
|
||||
<div class="product-image">
|
||||
<a
|
||||
title="{{ $item->product->name }}"
|
||||
href="{{ route('shop.productOrCategory.index', $item->product->url_key) }}">
|
||||
|
||||
<img
|
||||
src="{{ productimage()->getProductBaseImage($item->product)['medium_image_url'] }}"
|
||||
:onerror="`this.src='${this.$root.baseUrl}/vendor/webkul/ui/assets/images/product/large-product-placeholder.png'`" alt="" />
|
||||
|
||||
<div class="quick-view-in-list">
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="product-information">
|
||||
<div class="p-2">
|
||||
<div class="product-name">
|
||||
<a
|
||||
href="{{ route('shop.productOrCategory.index', $item->product->url_key) }}"
|
||||
title="{{ $item->product->name }}" class="unset">
|
||||
|
||||
<span class="fs16">{{ $item->product->name }}</span>
|
||||
</a>
|
||||
|
||||
@if (isset($item->product->additional['attributes']))
|
||||
<div class="item-options">
|
||||
@foreach ($item->product->additional['attributes'] as $attribute)
|
||||
<b>{{ $attribute['attribute_name'] }} : </b> {{ $attribute['option_label'] }}
|
||||
</br>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<div class="product-price">
|
||||
@include ('shop::products.price', ['product' => $item->product])
|
||||
</div>
|
||||
|
||||
<div class="cart-wish-wrap mt5">
|
||||
@if ($visibility ?? false)
|
||||
<div class="mb-2">
|
||||
<span class="fs16">
|
||||
{{ __('shop::app.customer.account.wishlist.visibility') }} :
|
||||
|
||||
<span class="badge {{ $item->shared ? 'badge-success' : 'badge-danger' }}">
|
||||
{{ $item->shared ? __('shop::app.customer.account.wishlist.public') : __('shop::app.customer.account.wishlist.private') }}
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div>
|
||||
@include('shop::products.add-to-cart', [
|
||||
'reloadPage' => true,
|
||||
'addWishlistClass' => 'pl10',
|
||||
'product' => $item->product,
|
||||
'addToCartBtnClass' => 'medium-padding',
|
||||
'showCompare' => core()->getConfigData('general.content.shop.compare_option') == "1" ? true : false,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
@extends('shop::layouts.master')
|
||||
|
||||
@section('page_title')
|
||||
{{ __('shop::app.customer.account.wishlist.customer-name', ['name' => $customer->name]) }}
|
||||
@endsection
|
||||
|
||||
@section('content-wrapper')
|
||||
<div class="container p-5">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="wishlist-container">
|
||||
<h2 class="text-center">
|
||||
{{ __('shop::app.customer.account.wishlist.customer-name', ['name' => $customer->name]) }}
|
||||
</h2>
|
||||
|
||||
@foreach ($items as $item)
|
||||
@include('shop::customers.account.wishlist.wishlist-product', ['item' => $item])
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Authentication Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used during authentication for various
|
||||
| messages that we need to display to the user. You are free to modify
|
||||
| these language lines according to your application's requirements.
|
||||
|
|
||||
*/
|
||||
|
||||
'failed' => 'ليس هناك حساب مسجل بهذه البيانات!',
|
||||
'throttle' => 'تم محاولة تسجيل الدخول عدة مرات! الرجاء المحاولة مرة أخرى خلاي :seconds ثواني.',
|
||||
|
||||
];
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pagination Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used by the paginator library to build
|
||||
| the simple pagination links. You are free to change them to anything
|
||||
| you want to customize your views to better match your application.
|
||||
|
|
||||
*/
|
||||
|
||||
'previous' => '« السابق',
|
||||
'next' => 'التالي »',
|
||||
|
||||
];
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reset Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are the default lines which match reasons
|
||||
| that are given by the password broker for a password update attempt
|
||||
| has failed, such as for an invalid token or invalid new password.
|
||||
|
|
||||
*/
|
||||
|
||||
'password' => 'يجب أن تتكون كلمة المرور من ستة أحرف على الأقل وأن تتطابق مع حقل تأكيدها!',
|
||||
'reset' => 'تم أعادة تعيين كلمة المرور!',
|
||||
'sent' => 'تم ارسال بريد الكتروني اليك به رابط إعادة تعيين كلمة المرور!',
|
||||
'token' => 'كود إعادة تعيين كلمة المرور هذا غير صالح!',
|
||||
'user' => "لم نجد مستخدم مسجل لدينا بهذا البريد الألكتروني!",
|
||||
|
||||
];
|
||||
|
|
@ -0,0 +1,179 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| as the size rules. Feel free to tweak each of these messages here.
|
||||
|
|
||||
*/
|
||||
|
||||
'accepted' => 'يجب أن تقوم بقبول :attribute.',
|
||||
'active_url' => ':attribute ليس رابط صالح.',
|
||||
'after' => ':attribute يجب أن يكون بعد :date.',
|
||||
'after_or_equal' => ':attribute يجب أن تكون مساوية أو بعد تاريخ :date.',
|
||||
'alpha' => ':attribute لا يجوز أن تحتوي إلا على حروف.',
|
||||
'alpha_dash' => ':attribute لا يجوز أن تحتوي إلا على حروف وأرقام وشرطات وشرطات سفلية.',
|
||||
'alpha_num' => ':attribute لا يجوز أن تحتوي إلا على أحرف وأرقام.',
|
||||
'array' => ':attribute يجب أن تكون مصفوفة/قائمة.',
|
||||
'before' => ':attribute يجب أن يكون قبل :date.',
|
||||
'before_or_equal' => ':attribute يجب أن تكون مساوية أو قبل تاريخ :date.',
|
||||
'between' => [
|
||||
'numeric' => ':attribute يجب أن يكون من :min إلى :max.',
|
||||
'file' => ':attribute يجب أن يكون من :min إلى :max كيلو بايت.',
|
||||
'string' => ':attribute يجب أن يكون من :min إلى :max حرف.',
|
||||
'array' => ':attribute يجب أن يكون من :min إلى :max عنصر.',
|
||||
],
|
||||
'boolean' => ':attribute يجب أن تكون true أو false.',
|
||||
'confirmed' => 'تأكيد :attribute لا يتطابق.',
|
||||
'date' => ':attribute ليس تاريخ صالح.',
|
||||
'date_format' => ':attribute لا يطابق الفورمات/الترتيب :format',
|
||||
'different' => ':attribute و :other يجب أن يكونوا مختلفين.',
|
||||
'digits' => ':attribute يجب أن يكون :digits أرقام.',
|
||||
'digits_between' => ':attribute يجب أن يكون رقم من :min إلى :max.',
|
||||
'dimensions' => ':attribute ليس لديها أبعاد صورة صحيحة.',
|
||||
'distinct' => ':attribute يحتوي على قيمة مكررة.',
|
||||
'email' => ':attribute يجب أن يكون بريد إلكتروني صالح.',
|
||||
'exists' => ':attribute المختار هذا غير صالح.',
|
||||
'file' => ':attribute يجب أن يكون ملف.',
|
||||
'filled' => ':attribute يجب أن يحتوي على قيمة.',
|
||||
'gt' => [
|
||||
'numeric' => ':attribute يجب أن يكون أكبر من :value.',
|
||||
'file' => ':attribute يجب أن يكون أكبر من :value كيلو بايت.',
|
||||
'string' => ':attribute يجب أن يكون أكبر من :value حروف.',
|
||||
'array' => ':attribute يجب أن يكون لديه أكبر من :value عناصر.',
|
||||
],
|
||||
'gte' => [
|
||||
'numeric' => ':attribute يجب أن يكون أكبر من أو يساوي :value.',
|
||||
'file' => ':attribute يجب أن يكون أكبر من أو يساوي :value كيلو بايت.',
|
||||
'string' => ':attribute يجب أن يكون أكبر من أو يساوي :value حروف.',
|
||||
'array' => ':attribute يجب أن يكون لدية :value عناصر أو أكثر.',
|
||||
],
|
||||
'image' => ':attribute يجب أن تكون صورة.',
|
||||
'in' => ':attribute المحدد هذا غير صالح.',
|
||||
'in_array' => 'حقل :attribute ليس موجود في :other.',
|
||||
'integer' => ':attribute يجب أن يكون رقم صحيح.',
|
||||
'ip' => ':attribute يجب أن يكون عنوان IP صالح.',
|
||||
'ipv4' => ':attribute يجب أن يكون عنوان IPv4 صالح.',
|
||||
'ipv6' => ':attribute يجب أن يكون عنوان IPv6 صالح.',
|
||||
'json' => ':attribute يجب أن يكون نص JSON صالح.',
|
||||
'lt' => [
|
||||
'numeric' => ':attribute يجب أن يكون أقل من :value.',
|
||||
'file' => ':attribute يجب أن يكون أقل من :value كيلو بايت.',
|
||||
'string' => ':attribute يجب أن يكون أقل من :value حروف.',
|
||||
'array' => ':attribute يجب أن يكون لديه أقل من :value عناصر.',
|
||||
],
|
||||
'lte' => [
|
||||
'numeric' => ':attribute يجب أن يكون أقل من أو يساوي :value.',
|
||||
'file' => ':attribute يجب أن يكون أقل من أو يساوي :value كيلو بايت.',
|
||||
'string' => ':attribute يجب أن يكون أقل من أو يساوي :value حروف.',
|
||||
'array' => ':attribute يجب أن يكون لدية :value عناصر أو أقل.',
|
||||
],
|
||||
'max' => [
|
||||
'numeric' => ':attribute يجب أن لا تكون أكبر من :max.',
|
||||
'file' => ':attribute يجب أن لا تكون أكبر من :max كيلو بايت.',
|
||||
'string' => ':attribute يجب أن لا تكون أكبر من :max حرووف.',
|
||||
'array' => ':attribute يجب أن لا تحتوى على أكبر من :max عنصر.',
|
||||
],
|
||||
'mimes' => ':attribute يجب أن يكون ملف بواحد من هذه الأمتدادات :values.',
|
||||
'mimetypes' => ':attribute يجب أن يكون ملف بواحد من هذه الأمتدادات :values.',
|
||||
'min' => [
|
||||
'numeric' => ':attribute يجب أن يكون علي الأقل :min.',
|
||||
'file' => ':attribute يجب أن يكون علي الأقل :min كيلو بايت.',
|
||||
'string' => ':attribute يجب أن يكون علي الأقل :min حروف.',
|
||||
'array' => ':attribute يجب أن يكون علي الأقل :min عنصر.',
|
||||
],
|
||||
'not_in' => ':attribute المختارة غير صالحة.',
|
||||
'not_regex' => 'تنسيق :attribute هذا غير صالح.',
|
||||
'numeric' => ':attribute يجب أن يكون رقم.',
|
||||
'present' => 'حقل :attribute مطلوب.',
|
||||
'regex' => 'تنسيق :attribute هذا غير صالح.',
|
||||
'required' => 'حقل :attribute مطلوب.',
|
||||
'required_if' => 'حقل :attribute مطلوب عندما تكون قيمة :other هي :value.',
|
||||
'required_unless' => 'حقل :attribute مطلوب ما لم يكن :other في :values.',
|
||||
'required_with' => 'حقل :attribute مطلوب في وجود :values.',
|
||||
'required_with_all' => 'حقل :attribute مطلوب في وجود :values.',
|
||||
'required_without' => 'حقل :attribute مطلوب في عدم وجود :values.',
|
||||
'required_without_all' => 'حقل :attribute مطلوب عند عدم وجود أياً من :values.',
|
||||
'same' => ':attribute و :other يجب أن يكونوا متساويين.',
|
||||
'size' => [
|
||||
'numeric' => ':attribute يجب أن يكون :size.',
|
||||
'file' => ':attribute يجب أن يكون :size كيلو بايت.',
|
||||
'string' => ':attribute يجب أن يكون :size حروف.',
|
||||
'array' => ':attribute يجب أن تحتوي على :size عنصر.',
|
||||
],
|
||||
'string' => ':attribute يجب أن يكون نص.',
|
||||
'timezone' => ':attribute يجب أن تكون منطقة صالحة.',
|
||||
'unique' => ':attribute مسجل مسبقاً.',
|
||||
'uploaded' => 'فشلت عملية رفع :attribute.',
|
||||
'url' => 'تنسيق :attribute غير صالح.',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify custom validation messages for attributes using the
|
||||
| convention "attribute.rule" to name the lines. This makes it quick to
|
||||
| specify a specific custom language line for a given attribute rule.
|
||||
|
|
||||
*/
|
||||
|
||||
'custom' => [
|
||||
'attribute-name' => [
|
||||
'rule-name' => 'custom-message',
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Attributes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to swap attribute place-holders
|
||||
| with something more reader friendly such as E-Mail Address instead
|
||||
| of "email". This simply helps us make messages a little cleaner.
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [
|
||||
'name' => 'الأسم',
|
||||
'username' => 'اسم المستخدم',
|
||||
'email' => 'البريد الألكتروني',
|
||||
'first_name' => 'الأسم الأول',
|
||||
'last_name' => 'الأسم الأخير',
|
||||
'password' => 'كلمة المرور',
|
||||
'password_confirmation' => 'تكرار كلمة المرور',
|
||||
'city' => 'المدينة',
|
||||
'country' => 'الدولة',
|
||||
'address' => 'العنوان',
|
||||
'phone' => 'رقم الهاتف',
|
||||
'mobile' => 'رقم الهاتف النقال',
|
||||
'age' => 'السن',
|
||||
'sex' => 'الجنس',
|
||||
'gender' => 'النوع',
|
||||
'day' => 'اليوم',
|
||||
'month' => 'الشهر',
|
||||
'year' => 'السنة',
|
||||
'hour' => 'الساعة',
|
||||
'minute' => 'الدقيقة',
|
||||
'second' => 'الثانية',
|
||||
'title' => 'العنوان',
|
||||
'text' => 'النص',
|
||||
'content' => 'المحتوى',
|
||||
'description' => 'الوصف',
|
||||
'excerpt' => 'المقتطفات',
|
||||
'date' => 'التاريخ',
|
||||
'time' => 'الوقت',
|
||||
'available' => 'موجود',
|
||||
'size' => 'الحجم',
|
||||
'terms' => 'المصطلحات',
|
||||
'province' => 'المحافظة',
|
||||
],
|
||||
|
||||
];
|
||||
Loading…
Reference in New Issue