Bir teklif gönderme sayfası var bu teklif sayfasında dosya upload ve onaylama seçeneği mevcut o alanlar zorunlu olarak belirtildi ben o 2 seçeneği isteğe bağlı yapmak istiyorum. Kodları incelediğimde 2 sayfanın da alakalı olduğunu anladım.Bir sayfa teklif gönderme sayfasındaki form elemanları diğer sayfada form eleman izin yetkileri yer alıyor.
1. Teklif gönderme formu kodları;
@extends('front.layout')
@section('content')
<!-- breadcrumb area start -->
<div class="breadcrumb-area cases">
<div class="container">
<div class="breadcrumb-txt">
<div class="row">
<div class="col-xl-7 col-lg-8 col-sm-10">
<span>{{$bs->quote_title}}</span>
<h1>{{$bs->quote_subtitle}}</h1>
<ul class="breadcumb">
<li><a href="{{route('front.index')}}">{{__('Home')}}</a></li>
<li>{{__('Quote Page')}}</li>
</ul>
</div>
</div>
</div>
</div>
<div class="breadcrumb-area-overlay"></div>
</div>
<!-- breadcrumb area end -->
<!-- quote area start -->
<div class="quote-area">
<div class="container">
<div class="row">
<div class="col-lg-12">
<form action="{{route('front.sendquote')}}" enctype="multipart/form-data" method="POST">
@csrf
<div class="row">
<div class="col-lg-6">
<div class="form-element mb-4">
<input name="name" type="text" value="{{old('name')}}" placeholder="{{__('Name')}}">
@if ($errors->has('name'))
<p class="text-danger mb-0">{{$errors->first('name')}}</p>
@endif
</div>
</div>
<div class="col-lg-6">
<div class="form-element mb-4">
<input type="text" name="email" value="{{old('email')}}" placeholder="{{__('Email')}}">
@if ($errors->has('email'))
<p class="text-danger mb-0">{{$errors->first('email')}}</p>
@endif
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="form-element mb-4">
<input type="text" name="phone" value="{{old('phone')}}" placeholder="{{__('Contact Number')}}">
@if ($errors->has('phone'))
<p class="text-danger mb-0">{{$errors->first('phone')}}</p>
@endif
</div>
</div>
<div class="col-lg-6">
<div class="form-element mb-4">
<input type="text" name="country" value="{{old('country')}}" placeholder="{{__('Country Name')}}">
@if ($errors->has('country'))
<p class="text-danger mb-0">{{$errors->first('country')}}</p>
@endif
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="form-element mb-4">
<select name="budget">
<option value="" selected disabled>{{__('Approximate Budget')}}</option>
@foreach ($budgets as $key => $budget)
<option value="{{$budget->limits}}" {{old('budget') == $budget->limits ? 'selected' : ''}}>{{$budget->limits}}</option>
@endforeach
</select>
@if ($errors->has('budget'))
<p class="text-danger mb-0">{{$errors->first('budget')}}</p>
@endif
</div>
</div>
<div class="col-lg-6">
<div class="form-element mb-4">
<input type="text" name="skype_whatsapp" value="{{old('skype_whatsapp')}}" placeholder="{{__('Skype ID / Whatsapp Number')}}">
@if ($errors->has('skype_whatsapp'))
<p class="text-danger mb-0">{{$errors->first('skype_whatsapp')}}</p>
@endif
</div>
</div>
</div>
<div class="row mb-4">
<div class="col-lg-12 mb-2">
<h6><strong>{{__('Select Your Choices :')}}</strong></h6>
</div>
<div class="col-lg-12">
<div class="row">
@foreach ($services as $key => $service)
<div class="col-lg-3 col-md-6">
<div class="custom-control custom-checkbox">
<input name="services[]" type="checkbox" class="custom-control-input" id="customCheck{{$service->id}}" value="{{$service->title}}" {{is_array(old('services')) && in_array($service->title, old('services')) ? 'checked' : ''}}>
<label class="custom-control-label pt-1" for="customCheck{{$service->id}}">{{$service->title}}</label>
</div>
</div>
@endforeach
</div>
</div>
<div class="col-lg-12">
@if ($errors->has('services'))
<p class="text-danger mb-0">{{$errors->first('services')}}</p>
@endif
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div class="form-element mb-4">
<textarea name="description" rows="8" cols="80" placeholder="{{__('Project Description')}}">{{old('description')}}</textarea>
@if ($errors->has('description'))
<p class="text-danger mb-0">{{$errors->first('description')}}</p>
@endif
</div>
</div>
</div>
<div class="row mb-4">
<div class="col-lg-12">
<div class="form-element mb-2">
<input type="file" name="nda" value="">
</div>
<p class="text-warning mb-0">** {{__('Only doc, docx, pdf, rtf, txt files are allowed')}}</p>
@if ($errors->has('nda'))
<p class="text-danger mb-0">{{$errors->first('nda')}}</p>
@endif
</div>
</div>
<div class="row mb-4">
<div class="col-lg-12">
<div class="custom-control custom-checkbox">
<input type="checkbox" name="checknda" class="custom-control-input" id="nda" value="1" {{old('checknda') == 1 ? 'checked' : ''}}>
<label class="custom-control-label pt-1" for="nda">{{__('Send me a copy of NDA')}}</label>
</div>
@if ($errors->has('checknda'))
<p class="text-danger mb-0">{{$errors->first('checknda')}}</p>
@endif
</div>
</div>
@if ($bs->is_recaptcha == 1)
<div class="row mb-4">
<div class="col-lg-12">
{!! NoCaptcha::renderJs() !!}
{!! NoCaptcha::display() !!}
@if ($errors->has('g-recaptcha-response'))
<p class="text-danger mb-0">{{$errors->first('g-recaptcha-response')}}</p>
@endif
</div>
</div>
@endif
<div class="row">
<div class="col-lg-12 text-center">
<button type="submit" name="button">{{__('Submit')}}</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<!-- quote area end -->
@endsection----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------İkinci ilgili dosya;
<?php
namespace App\Http\Controllers\Front;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\BasicSetting as BS;
use App\Slider;
use App\Scategory;
use App\Portfolio;
use App\Feature;
use App\Point;
use App\Statistic;
use App\Testimonial;
use App\Gallery;
use App\Faq;
use App\Page;
use App\Member;
use App\Blog;
use App\Partner;
use App\Service;
use App\Archive;
use App\Bcategory;
use App\Subscriber;
use App\Budget;
use App\Quote;
use App\Language;
use Session;
use Validator;
use Config;
class FrontendController extends Controller
{
public function __construct() {
$bs = BS::first();
Config::set('captcha.sitekey', $bs->google_recaptcha_site_key);
Config::set('captcha.secret', $bs->google_recaptcha_secret_key);
}
public function index() {
$data['sliders'] = Slider::all();
$data['scats'] = Scategory::where('status', 1)->get();
$data['portfolios'] = Portfolio::orderBy('id', 'DESC')->limit(10)->get();
$data['features'] = Feature::all();
$data['points'] = Point::all();
$data['statistics'] = Statistic::all();
$data['testimonials'] = Testimonial::all();
$data['faqs'] = Faq::all();
$data['members'] = Member::all();
$data['blogs'] = Blog::orderBy('id', 'DESC')->limit(6)->get();
$data['partners'] = Partner::all();
return view('front.index', $data);
}
public function services(Request $request) {
$category = $request->category;
$term = $request->term;
$data['scats'] = Scategory::where('status', 1)->get();
if (!empty($category)) {
$data['category'] = Scategory::findOrFail($category);
}
$data['services'] = Service::when($category, function ($query, $category) {
return $query->where('scategory_id', $category);
})->when($term, function ($query, $term) {
return $query->where('title', 'like', '%'.$term.'%');
})->orderBy('id', 'DESC')->paginate(6);
return view('front.services', $data);
}
public function portfolios(Request $request) {
$category = $request->category;
$term = $request->term;
$data['scats'] = Scategory::where('status', 1)->get();
if (!empty($category)) {
$data['category'] = Scategory::findOrFail($category);
}
$data['portfolios'] = Portfolio::when($category, function ($query, $category) {
$serviceIdArr = [];
$serviceids = Service::select('id')->where('scategory_id', $category)->get();
foreach ($serviceids as $key => $serviceid) {
$serviceIdArr[] = $serviceid->id;
}
return $query->whereIn('service_id', $serviceIdArr);
})->orderBy('id', 'DESC')->paginate(9);
return view('front.portfolios', $data);
}
public function portfoliodetails($slug) {
$data['portfolio'] = Portfolio::where('slug', $slug)->firstOrFail();
return view('front.portfolio-details', $data);
}
public function servicedetails($slug) {
$data['service'] = Service::where('slug', $slug)->firstOrFail();
$data['scats'] = Scategory::all();
return view('front.service-details', $data);
}
public function blogs(Request $request) {
$category = $request->category;
$term = $request->term;
$tag = $request->tag;
$month = $request->month;
$year = $request->year;
$data['archives'] = Archive::orderBy('id', 'DESC')->get();
$data['bcats'] = Bcategory::where('status', 1)->orderBy('id', 'DESC')->get();
if (!empty($month) && !empty($year)) {
$archive = true;
} else {
$archive = false;
}
$data['blogs'] = Blog::when($category, function ($query, $category) {
return $query->where('bcategory_id', $category);
})
->when($term, function ($query, $term) {
return $query->where('title', 'like', '%'.$term.'%');
})
->when($tag, function ($query, $tag) {
return $query->where('tags', 'like', '%'.$tag.'%');
})
->when($archive, function ($query) use ($month, $year) {
return $query->whereMonth('created_at', $month)->whereYear('created_at', $year);
})->orderBy('id', 'DESC')->paginate(6);
return view('front.blogs', $data);
}
public function blogdetails($slug) {
$data['blog'] = Blog::where('slug', $slug)->firstOrFail();
$data['archives'] = Archive::orderBy('id', 'DESC')->get();
$data['bcats'] = Bcategory::where('status', 1)->orderBy('id', 'DESC')->get();
return view('front.blog-details', $data);
}
public function contact() {
if (session()->has('lang')) {
$data['langg'] = Language::where('code', session('lang'))->first();
return view('front.contact', $data);
}
return view('front.contact');
}
public function sendmail(Request $request) {
$bs = BS::first();
$messages = [
'g-recaptcha-response.required' => 'Please verify that you are not a robot.',
'g-recaptcha-response.captcha' => 'Captcha error! try again later or contact site admin.',
];
$rules = [
'name' => 'required',
'email' => 'required|email',
'subject' => 'required',
'message' => 'required'
];
if ($bs->is_recaptcha == 1) {
$rules['g-recaptcha-response'] = 'required|captcha';
}
$request->validate($rules, $messages);
$bs = BS::firstOrFail();
$from = $request->email;
$to = $bs->contact_mail;
$subject = $request->subject;
$message = $request->message;
$headers = "From: $request->name <$from> \r\n";
$headers .= "Reply-To: $request->name <$from> \r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
@if ($errors->has('name'))
<p class="text-danger mb-0">{{$errors->first('name')}}</p>
@endif
</div>
</div>
<div class="col-lg-6">
<div class="form-element mb-4">
<input type="text" name="email" value="{{old('email')}}" placeholder="{{__('Email')}}">
@if ($errors->has('email'))
<p class="text-danger mb-0">{{$errors->first('email')}}</p>
@endif
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="form-element mb-4">
<input type="text" name="phone" value="{{old('phone')}}" placeholder="{{__('Contact Number')}}">
@if ($errors->has('phone'))
<p class="text-danger mb-0">{{$errors->first('phone')}}</p>
@endif
</div>
</div>
<div class="col-lg-6">
<div class="form-element mb-4">
<input type="text" name="country" value="{{old('country')}}" placeholder="{{__('Country Name')}}">
@if ($errors->has('country'))
<p class="text-danger mb-0">{{$errors->first('country')}}</p>
@endif
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="form-element mb-4">
<select name="budget">
<option value="" selected disabled>{{__('Approximate Budget')}}</option>
@foreach ($budgets as $key => $budget)
<option value="{{$budget->limits}}" {{old('budget') == $budget->limits ? 'selected' : ''}}>{{$budget->limits}}</option>
@endforeach
</select>
@if ($errors->has('budget'))
<p class="text-danger mb-0">{{$errors->first('budget')}}</p>
@endif
</div>
</div>
<div class="col-lg-6">
<div class="form-element mb-4">
<input type="text" name="skype_whatsapp" value="{{old('skype_whatsapp')}}" placeholder="{{__('Skype ID / Whatsapp Number')}}">
@if ($errors->has('skype_whatsapp'))
<p class="text-danger mb-0">{{$errors->first('skype_whatsapp')}}</p>
@endif
</div>
</div>
</div>
<div class="row mb-4">
<div class="col-lg-12 mb-2">
<h6><strong>{{__('Select Your Choices :')}}</strong></h6>
</div>
<div class="col-lg-12">
<div class="row">
@foreach ($services as $key => $service)
<div class="col-lg-3 col-md-6">
<div class="custom-control custom-checkbox">
<input name="services[]" type="checkbox" class="custom-control-input" id="customCheck{{$service->id}}" value="{{$service->title}}" {{is_array(old('services')) && in_array($service->title, old('services')) ? 'checked' : ''}}>
<label class="custom-control-label pt-1" for="customCheck{{$service->id}}">{{$service->title}}</label>
</div>
</div>
@endforeach
</div>
</div>
<div class="col-lg-12">
@if ($errors->has('services'))
<p class="text-danger mb-0">{{$errors->first('services')}}</p>
@endif
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div class="form-element mb-4">
<textarea name="description" rows="8" cols="80" placeholder="{{__('Project Description')}}">{{old('description')}}</textarea>
@if ($errors->has('description'))
<p class="text-danger mb-0">{{$errors->first('description')}}</p>
@endif
</div>
</div>
</div>
<div class="row mb-4">
<div class="col-lg-12">
<div class="form-element mb-2">
<input type="file" name="nda" value="">
</div>
<p class="text-warning mb-0">** {{__('Only doc, docx, pdf, rtf, txt files are allowed')}}</p>
@if ($errors->has('nda'))
<p class="text-danger mb-0">{{$errors->first('nda')}}</p>
@endif
</div>
</div>
<div class="row mb-4">
<div class="col-lg-12">
<div class="custom-control custom-checkbox">
<input type="checkbox" name="checknda" class="custom-control-input" id="nda" value="1" {{old('checknda') == 1 ? 'checked' : ''}}>
<label class="custom-control-label pt-1" for="nda">{{__('Send me a copy of NDA')}}</label>
</div>
@if ($errors->has('checknda'))
<p class="text-danger mb-0">{{$errors->first('checknda')}}</p>
@endif
</div>
</div>
@if ($bs->is_recaptcha == 1)
<div class="row mb-4">
<div class="col-lg-12">
{!! NoCaptcha::renderJs() !!}
{!! NoCaptcha::display() !!}
@if ($errors->has('g-recaptcha-response'))
<p class="text-danger mb-0">{{$errors->first('g-recaptcha-response')}}</p>
@endif
</div>
</div>
@endif
<div class="row">
<div class="col-lg-12 text-center">
<button type="submit" name="button">{{__('Submit')}}</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<!-- quote area end -->
@endsection----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------İkinci ilgili dosya2;
Session::flash('success', 'Email sent successfully!');
return back();
}
public function subscribe(Request $request) {
$rules = [
'email' => 'required|email|unique:subscribers'
];
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
return response()->json(array('errors' => $validator->getMessageBag()->toArray()));
}
$subsc = new Subscriber;
$subsc->email = $request->email;
$subsc->save();
return "success";
}
public function quote() {
$data['services'] = Service::all();
$data['budgets'] = Budget::all();
return view('front.quote', $data);
}
public function sendquote(Request $request) {
$bs = BS::first();
$nda = $request->file('nda');
$allowedExts = array('doc', 'docx', 'pdf', 'rtf', 'txt');
$messages = [
'g-recaptcha-response.required' => 'Please verify that you are not a robot.',
'g-recaptcha-response.captcha' => 'Captcha error! try again later or contact site admin.',
];
$rules = [
'name' => 'required|max:255',
'email' => 'required|email|max:255',
'phone' => 'required|max:30',
'country' => 'required|max:100',
'budget' => 'required',
'skype_whatsapp' => 'required|max:255',
'services' => 'required',
'description' => 'required',
'nda' => [
'required',
function($attribute, $value, $fail) use ($nda, $allowedExts) {
$ext = $nda->getClientOriginalExtension();
if(!in_array($ext, $allowedExts)) {
return $fail("Only doc, docx, pdf, rtf, txt files are allowed");
}
}
],
'checknda' => 'required',
];
if ($bs->is_recaptcha == 1) {
$rules['g-recaptcha-response'] = 'required|captcha';
}
$request->validate($rules, $messages);
$in = $request->all();
$in['services'] = json_encode($request->services);
$filename = uniqid() . '.' . $nda->getClientOriginalExtension();
$nda->move('assets/front/ndas/', $filename);
$in['nda'] = $filename;
$quote = Quote::create($in);
Session::flash('success', 'Quote request sent successfully');
return back();
}
public function team() {
$data['members'] = Member::all();
return view('front.team', $data);
}
public function gallery() {
$data['galleries'] = Gallery:
rderBy('id', 'DESC')->paginate(12);return view('front.gallery', $data);
}
public function faq() {
$data['faqs'] = Faq:
rderBy('id', 'DESC')->get();return view('front.faq', $data);
}
public function dynamicPage($slug) {
$data['page'] = Page::where('slug', $slug)->firstOrFail();
return view('front.dynamic', $data);
}
public function changeLanguage($lang)
{
session()->put('lang', $lang);
app()->setLocale($lang);
return redirect()->back();
}
}
[/PHPR]
Günceldir yardımcı olacak yok mu