Файловый менеджер - Редактировать - /home/clickysoft/public_html/jmapi5.clickysoft.net/resources/views/admin/products/create.blade.php
Назад
@extends('layouts.admin') @section('content') <div class="card"> <div class="card-header"> {{ trans('global.create') }} {{ trans('cruds.product.title_singular') }} </div> <div class="card-body"> <form method="POST" action="{{ route("admin.products.store") }}" enctype="multipart/form-data"> @csrf <div class="form-group"> <label class="required" for="category_id">{{ trans('cruds.product.fields.category') }}</label> <select class="form-control select2 {{ $errors->has('category') ? 'is-invalid' : '' }}" name="category_id" id="category_id" required> @foreach($categories as $id => $entry) <option value="{{ $id }}" {{ old('category_id') == $id ? 'selected' : '' }}>{{ $entry }}</option> @endforeach </select> @if($errors->has('category')) <span class="text-danger">{{ $errors->first('category') }}</span> @endif <span class="help-block">{{ trans('cruds.product.fields.category_helper') }}</span> </div> <div class="form-group"> <label class="required" for="sku">{{ trans('cruds.product.fields.sku') }}</label> <input class="form-control {{ $errors->has('sku') ? 'is-invalid' : '' }}" type="text" name="sku" id="sku" value="{{ old('sku', '') }}" required> @if($errors->has('sku')) <span class="text-danger">{{ $errors->first('sku') }}</span> @endif <span class="help-block">{{ trans('cruds.product.fields.sku_helper') }}</span> </div> <div class="form-group"> <label class="required" for="name">{{ trans('cruds.product.fields.name') }}</label> <input class="form-control {{ $errors->has('name') ? 'is-invalid' : '' }}" type="text" name="name" id="name" value="{{ old('name', '') }}" required> @if($errors->has('name')) <span class="text-danger">{{ $errors->first('name') }}</span> @endif <span class="help-block">{{ trans('cruds.product.fields.name_helper') }}</span> </div> <div class="form-group"> <label class="required" for="slug">{{ trans('cruds.product.fields.slug') }}</label> <input class="form-control {{ $errors->has('slug') ? 'is-invalid' : '' }}" type="text" name="slug" id="slug" value="{{ old('slug', '') }}" required> @if($errors->has('slug')) <span class="text-danger">{{ $errors->first('slug') }}</span> @endif <span class="help-block">{{ trans('cruds.product.fields.slug_helper') }}</span> </div> <div class="form-group"> <label for="description">{{ trans('cruds.product.fields.description') }}</label> <input class="form-control {{ $errors->has('description') ? 'is-invalid' : '' }}" type="text" name="description" id="description" value="{{ old('description', '') }}"> @if($errors->has('description')) <span class="text-danger">{{ $errors->first('description') }}</span> @endif <span class="help-block">{{ trans('cruds.product.fields.description_helper') }}</span> </div> <div class="form-group"> <label for="featured_image">{{ trans('cruds.product.fields.featured_image') }}</label> <div class="needsclick dropzone {{ $errors->has('featured_image') ? 'is-invalid' : '' }}" id="featured_image-dropzone"> </div> @if($errors->has('featured_image')) <span class="text-danger">{{ $errors->first('featured_image') }}</span> @endif <span class="help-block">{{ trans('cruds.product.fields.featured_image_helper') }}</span> </div> <div class="form-group"> <label for="gallery_images">{{ trans('cruds.product.fields.gallery_images') }}</label> <div class="needsclick dropzone {{ $errors->has('gallery_images') ? 'is-invalid' : '' }}" id="gallery_images-dropzone"> </div> @if($errors->has('gallery_images')) <span class="text-danger">{{ $errors->first('gallery_images') }}</span> @endif <span class="help-block">{{ trans('cruds.product.fields.gallery_images_helper') }}</span> </div> <div class="form-group"> <label class="required">{{ trans('cruds.product.fields.status') }}</label> @foreach(App\Models\Product::STATUS_RADIO as $key => $label) <div class="form-check {{ $errors->has('status') ? 'is-invalid' : '' }}"> <input class="form-check-input" type="radio" id="status_{{ $key }}" name="status" value="{{ $key }}" {{ old('status', '1') === (string) $key ? 'checked' : '' }} required> <label class="form-check-label" for="status_{{ $key }}">{{ $label }}</label> </div> @endforeach @if($errors->has('status')) <span class="text-danger">{{ $errors->first('status') }}</span> @endif <span class="help-block">{{ trans('cruds.product.fields.status_helper') }}</span> </div> <div class="form-group"> <label for="product_sketch">{{ trans('cruds.product.fields.product_sketch') }}</label> <div class="needsclick dropzone {{ $errors->has('product_sketch') ? 'is-invalid' : '' }}" id="product_sketch-dropzone"> </div> @if($errors->has('product_sketch')) <span class="text-danger">{{ $errors->first('product_sketch') }}</span> @endif <span class="help-block">{{ trans('cruds.product.fields.product_sketch_helper') }}</span> </div> <div class="form-group"> <button class="btn btn-danger" type="submit"> {{ trans('global.save') }} </button> </div> </form> </div> </div> @endsection @section('scripts') <script> Dropzone.options.featuredImageDropzone = { url: '{{ route('admin.products.storeMedia') }}', maxFilesize: 2, // MB acceptedFiles: '.jpeg,.jpg,.png,.gif', maxFiles: 1, addRemoveLinks: true, headers: { 'X-CSRF-TOKEN': "{{ csrf_token() }}" }, params: { size: 2, width: 4096, height: 4096 }, success: function (file, response) { $('form').find('input[name="featured_image"]').remove() $('form').append('<input type="hidden" name="featured_image" value="' + response.name + '">') }, removedfile: function (file) { file.previewElement.remove() if (file.status !== 'error') { $('form').find('input[name="featured_image"]').remove() this.options.maxFiles = this.options.maxFiles + 1 } }, init: function () { @if(isset($product) && $product->featured_image) var file = {!! json_encode($product->featured_image) !!} this.options.addedfile.call(this, file) this.options.thumbnail.call(this, file, file.preview ?? file.preview_url) file.previewElement.classList.add('dz-complete') $('form').append('<input type="hidden" name="featured_image" value="' + file.file_name + '">') this.options.maxFiles = this.options.maxFiles - 1 @endif }, error: function (file, response) { if ($.type(response) === 'string') { var message = response //dropzone sends it's own error messages in string } else { var message = response.errors.file } file.previewElement.classList.add('dz-error') _ref = file.previewElement.querySelectorAll('[data-dz-errormessage]') _results = [] for (_i = 0, _len = _ref.length; _i < _len; _i++) { node = _ref[_i] _results.push(node.textContent = message) } return _results } } </script> <script> var uploadedGalleryImagesMap = {} Dropzone.options.galleryImagesDropzone = { url: '{{ route('admin.products.storeMedia') }}', maxFilesize: 2, // MB acceptedFiles: '.jpeg,.jpg,.png,.gif', addRemoveLinks: true, headers: { 'X-CSRF-TOKEN': "{{ csrf_token() }}" }, params: { size: 2, width: 4096, height: 4096 }, success: function (file, response) { $('form').append('<input type="hidden" name="gallery_images[]" value="' + response.name + '">') uploadedGalleryImagesMap[file.name] = response.name }, removedfile: function (file) { console.log(file) file.previewElement.remove() var name = '' if (typeof file.file_name !== 'undefined') { name = file.file_name } else { name = uploadedGalleryImagesMap[file.name] } $('form').find('input[name="gallery_images[]"][value="' + name + '"]').remove() }, init: function () { @if(isset($product) && $product->gallery_images) var files = {!! json_encode($product->gallery_images) !!} for (var i in files) { var file = files[i] this.options.addedfile.call(this, file) this.options.thumbnail.call(this, file, file.preview ?? file.preview_url) file.previewElement.classList.add('dz-complete') $('form').append('<input type="hidden" name="gallery_images[]" value="' + file.file_name + '">') } @endif }, error: function (file, response) { if ($.type(response) === 'string') { var message = response //dropzone sends it's own error messages in string } else { var message = response.errors.file } file.previewElement.classList.add('dz-error') _ref = file.previewElement.querySelectorAll('[data-dz-errormessage]') _results = [] for (_i = 0, _len = _ref.length; _i < _len; _i++) { node = _ref[_i] _results.push(node.textContent = message) } return _results } } </script> <script> Dropzone.options.productSketchDropzone = { url: '{{ route('admin.products.storeMedia') }}', maxFilesize: 2, // MB acceptedFiles: '.jpeg,.jpg,.png,.gif', maxFiles: 1, addRemoveLinks: true, headers: { 'X-CSRF-TOKEN': "{{ csrf_token() }}" }, params: { size: 2, width: 4096, height: 4096 }, success: function (file, response) { $('form').find('input[name="product_sketch"]').remove() $('form').append('<input type="hidden" name="product_sketch" value="' + response.name + '">') }, removedfile: function (file) { file.previewElement.remove() if (file.status !== 'error') { $('form').find('input[name="product_sketch"]').remove() this.options.maxFiles = this.options.maxFiles + 1 } }, init: function () { @if(isset($product) && $product->product_sketch) var file = {!! json_encode($product->product_sketch) !!} this.options.addedfile.call(this, file) this.options.thumbnail.call(this, file, file.preview ?? file.preview_url) file.previewElement.classList.add('dz-complete') $('form').append('<input type="hidden" name="product_sketch" value="' + file.file_name + '">') this.options.maxFiles = this.options.maxFiles - 1 @endif }, error: function (file, response) { if ($.type(response) === 'string') { var message = response //dropzone sends it's own error messages in string } else { var message = response.errors.file } file.previewElement.classList.add('dz-error') _ref = file.previewElement.querySelectorAll('[data-dz-errormessage]') _results = [] for (_i = 0, _len = _ref.length; _i < _len; _i++) { node = _ref[_i] _results.push(node.textContent = message) } return _results } } </script> @endsection
| ver. 1.4 |
Github
|
.
| PHP 8.1.29 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка