Laravel Contact form on Single Page website

橙三吉。 提交于 2021-01-28 05:53:08

问题


I'm trying to get the correct routes for the Laravel Contact form on a single page website but I'm not sure how to apply the routes so far, since i've done it with sites that aren't single page (parallax - like website/ scrollable).

These are the routes I am creating, so everything stays on the homepage(no redirects at all because it's a one page scrollable website)

 Route::get('/', 'ContactUsController@create')->name('contact.create');
 Route::post('/', 'ContactUsController@store')->name('contact.store');

My Controller looks like this: Please note that the create controller returns the view to my index which of course is routed like so ('/'),

    namespace App\Http\Controllers;

        use Illuminate\Http\Request;
        use App\Http\Requests;
        use App\Mail\ContactEmail;

        class ContactUsController extends Controller
        {
            public function create()
            {

                return view('index');
            }

            public function store(Request $request)
            {
                $contact = [];

                $contact['name'] = $request -> get('name');

                $contact['phone'] = $request -> get('phone');
                $contact['email'] = $request -> get('email');

                $contact['subject'] = $request -> get('subject');
                $contact['message'] = $request -> get('message');

                //send mail logic here

Mail::to(config('mail.support.address'))->send(new ContactEmail($contact));

                flash('Your Message has been sent!) -> success();
                return redirect()-> route('/');
            }
        }

And below is my Contact Form:

{!! Form::open(['route' => 'contact.store', 'class' => 'text-light '])!!}

  {!! Form::label('name', 'Your Name', ['class' => 'text-light'])!!}
  {!! Form::text('name', null, ['class' => 'form-control text-light'])!!}


  {!! Form::label('phone', 'tel', ['class' => 'text-light'])!!}
 {!! Form::text('phone', null, ['class' => 'form-control text-light'])!!}


 {!! Form::label('email', 'Email', ['class' => 'text-light'])!!}
 {!! Form::text('email', null, ['class' => 'form-control text-light'])!!}

 {!! Form::label('subject', 'Subject', ['class' => 'text-light'])!!}
 {!! Form::text('subject', null, ['class' => 'form-control text-light'])!!}

 {!! Form::label('message', 'Your Message Here..', ['class' => 'text-light'] )!!}
 {!! Form::textarea('message', null, ['class' => 'form-control text-light'])!!}

 {!! Form::submit('Submit', ['class' => 'btn btn-info']) !!}

      {!! Form::close() !!}

              @if($errors -> any())
                 <div class="alert alert-danger">
                        <ul>
                     @foreach($errors -> all() as $error)
                             <li>{{ $error }}</li>
                                  @endforeach
                        </ul>
                  </div>
              @endif
              @include('flash::message')

Solved problem with solution :

//routes for contact form
Route::get('/contacts', 'ContactUsController@create')->name('contact.create');
Route::post('/contacts', 'ContactUsController@store')->name('contact.store');

Everything else same. Thanks guys for all support.


回答1:


//Create the routes in web.php

Route::get('contact',['as' => 'contact, 'uses' => 'ContactController@create']);
Route::post('contact',['as' => 'contact', 'uses' => 'ContactController@store']);



回答2:


// Create the ContactController using the command php artisan make:controller ContactController

<?php
   namespace App\Http\Controllers;

   use Illuminate\Http\Request;
   use App\Http\Requests\ContactRequest;
  use Mail;

   class ContactController extends Controller
  {
   public function create()
   {
     return view('front.contact.index');
   }

   public function store(ContactRequest $request)
    {

     \Mail::send('emails.contact',
    array(
        'name' => $request->get('name'),
        'email' => $request->get('email'),
        'user_message' => $request->get('message')
    ), function($message)
{
    $message->from('hello@outlined.co');
    $message->to('poornima@outlined.co', 'outlined')->subject('New Contact 
         Request from outlined');
});
return back()->with('status', 'your message has been received');
}}


来源:https://stackoverflow.com/questions/48571617/laravel-contact-form-on-single-page-website

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!