I have a test set up like this
use WithoutMiddleware;
public function test_it_submits_forms()
{
$this->visit('/admin/menu/samples')
->click('New Sample')
->seePageIs('/admin/menu/samples/new/create')
->type('test1', 'name')
->type('test2','description')
->type('test2','introduction')
->select(11, 'scenario_id')
->type('test','slug')
->press('Add');
}
and the file I am testing like this.
{!! Form::open(['url' => 'admin/menu/samples/', 'method' => 'POST']) !!}
<div class="row"><div class="form-group col-xs-8 col-md-7 {!! $errors->has('name') ? 'has-
error' : '' !!}">
{!! Form::label('name', 'Name:') !!}
{!! Form::text('name', null,['class' => 'form-control']) !!}
{!! $errors->first('name', '<span class="help-block">:message</span>')!!}
</div>
<div class="form-group col-xs-8 col-md-7">
{!! Form::label('introduction', 'Introduction:') !!}
{!! Form::textarea('introduction',null, ['class' => 'form-control']) !!}
</div>
<div class="form-group col-xs-8 col-md-7">
{!! Form::label('description', 'Description:') !!}
{!! Form::textarea('description',null, ['class' => 'form-control']) !!}
</div>
<div class="form-group col-xs-8 col-md-7 {!! $errors->has('slug') ? 'has-error' : '' !!}">
{!! Form::label('slug', 'URL:') !!}
{!! Form::text('slug',null, ['class' => 'form-control']) !!}
{!! $errors->first('slug', '<span class="help-block">:message</span>') !!}
</div>
<div class="form-group col-xs-8 col-md-7">
{!! Form::label('available_from', 'Available from:') !!}
{!! Form::date('available_from', \Carbon\Carbon::now(), ['class' => 'form-control2']) !!}
</div>
<div class="form-group col-xs-8 col-md-7">
{!! Form::label('available_until', 'Available until:') !!}
{!! Form::date('available_until', \Carbon\Carbon::now(), ['class' => 'form-control2']) !!}
</div>
<div class="form-group col-xs-8 col-md-7">
{!! Form::label('needs_auth', 'Needs authentication:') !!}
{!! Form::checkbox('needs_auth', 'value', false) !!}
</div>
<div class="form-group col-xs-8 col-md-7">
{!! Form::label('is_active', 'Active:') !!}
{!! Form::checkbox('is_active', 'value', false) !!}
</div>
<div class="form-group col-xs-8 col-md-7">
<h3>Add a scenario</h3>
{!! Form::select('scenario_id',($scenario), null,
['id'=>'scenario_id','placeholder' => 'Select one...']) !!}
</div>
<div class="form-group col-xs-8 col-md-7">
{!! Form::submit('Add', ['class' => 'btn btn-primary']) !!}
</div>
{!! Form::close() !!}
The test throws undefined variable errors on both of the variables $errors in form elements name and slug ( they just light up the form if something is not filled properly).
Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(8, 'Undefined varia...', '/home/vagrant/C...', 9, Array)
Could anyone tell why and how to fix this? The $errors variable should always be there by Laravel standards...
The $errors variable should always be there by Laravel standards...
Unless you disable the middleware!
The feature is implemented by having the ShareErrorsFromSession being enabled; which you just disabled.
The answer at Temporarily disable / bypass Middleware has some pointers form here on.
Related
I have a Laravel site running on a GoDaddy share hosting plan. I'm on PHP version 7.1. It has functioned fine up until yesterday. Now the blade views no longer show changes that occur on the database.
I see that the POST functions are working, as the changes are reflected in the database. They're just not showing up in the views themselves.
I've tried to clear the view cache as suggested here: Blade view not reflecting changes
I have also changed the timezone in config/app to 'America/Phoenix' to try and match godaddy's servers: https://www.godaddy.com/community/cPanel-Hosting/How-To-Change-Timezone-on-a-shared-server/td-p/102712
I've contacted GoDaddy's tech support and they couldn't find anything they believed could cause it.
Example Route:
//Resource
Route::resource('beer', 'BeerController');
Example Controller:
public function update(Request $request, Beer $beer)
{
$this->validate($request, ['name' => 'required']);
$beer->update(request(['name', 'beer_style_id', 'style', 'abv', 'ibus', 'srm', 'brewery_id', 'on_tap']));
return view('beers.show', compact('beer'));
}
Example View
#extends('layouts.master')
#section('content')
<div class="row">
<div class="col-sm-12">
<h1>Edit {{ $beer->name }}</h1>
<hr />
{!! Form::model($beer, ['route' => ['beer.update', $beer->id], 'method' => 'patch']) !!}
<div class="form-group">
{!! Form::label('name', 'Name') !!}
{!! Form::text('name', $value = null, ['class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::label('brewery_id', 'Brewery') !!}<br />
{!! Form::select('brewery_id', $breweries, null, ['placeholder' => 'Select Brewery', 'class' => 'custom-select mb-2', 'style' => 'width:100%;']) !!}
</div>
<div class="row" style="margin-bottom: 1rem;">
<div class="col">
{!! Form::label('beer_style_id', 'Style Family') !!}<br />
{!! Form::select('beer_style_id', $beerstyles, null, ['placeholder' => 'Select Style', 'class' => 'custom-select mb-2', 'style' => 'width:100%;']) !!}
</div>
<div class="col">
{!! Form::label('style', 'Style') !!}
{!! Form::text('style', $value = null, ['class' => 'form-control']) !!}
</div>
</div>
<div class="row" style="margin-bottom: 1.5rem;">
<div class="col">
{!! Form::label('abv', 'ABV') !!}
<div class="input-group">
{!! Form::number('abv', $value = null, ['class' => 'form-control', 'step' => '.1']) !!}
<span class="input-group-addon">%</span>
</div>
</div>
<div class="col">
{!! Form::label('ibus', 'IBUs') !!}
{!! Form::number('ibus', $value = null, ['class' => 'form-control']) !!}
</div>
<div class="col">
{!! Form::label('srm', 'SRM') !!}
{!! Form::number('srm', $value = null, ['class' => 'form-control', 'step' => '.1']) !!}
</div>
</div>
<div class="form-group" id="on-tap-checkbox">
{!! Form::checkbox('on_tap', '1') !!} On Tap
</div>
<div class="form-group">
{!! Form::submit('Save', ['class' => 'btn btn-primary']) !!}
Cancel
</div>
#include('layouts.errors')
{!! Form::close() !!}
</div>
</div>
#endsection
I am using following codes for login form -
{!! Form::open(['url' => '/admin/login']) !!}
<div class="form-group">
{!! Form::label('email', 'Email Id:') !!}
{!! Form::text('email', null, ['class' => 'form-control input-sm']) !!}
</div>
<div class="form-group">
{!! Form::label('password', 'Password') !!}
{!! Form::password('password', ['class' => 'form-control input-sm']) !!}
</div>
<div class="form-group">
{!! csrf_field() !!}
{!! Form::submit('Login', ['class' => 'btn btn-primary btn-block']) !!}
</div>
{!! Form::close() !!}
But when I inspect it in browser , it is showing input field with name="_token" but with empty value.
Is there anything else I am missing? Please guide.
Here is my code:
controller file: EmergencyContactsController.php
$surnames = DB::table('salutations')->pluck('name');
return view('patient/emergencycontacts', ['salutation' => $surnames]);
Blade file: patient/emergencycontacts.blade.php
{!! Form::open(array('route' => 'emergencycontacts_store', 'class' => 'form')) !!}
<div class="form-group">
{!! Form::label('Salutation') !!}
{{ Form::select('role', ['' => 'Select Role'] + $salutation, null, ['class' => 'form-control']) }}
</div>
<div class="form-group">
{!! Form::label('First Name') !!}
{!! Form::text('firstname', null, array('required', 'class'=>'form-control', 'placeholder'=>'First Name')) !!}
</div>
<div class="form-group">
{!! Form::label('Last Name') !!}
{!! Form::text('lastname', null, array('required', 'class'=>'form-control', 'placeholder'=>'Last Name')) !!}
</div>
<div class="form-group">
{!! Form::label('Relationship') !!}
{{ Form::select('relationship', ['Father', 'Mother', 'Husband','Wife','Son','Daughter','Uncle','Aunty','Other']) }}
</div>
<div class="form-group">
{!! Form::label('Phone') !!}
{!! Form::text('phone', null, array('required', 'class'=>'form-control', 'placeholder'=>'Phone')) !!}
</div>
<div class="form-group">
{!! Form::label('Fax') !!}
{!! Form::text('fax', null, array('class'=>'form-control', 'placeholder'=>'Fax')) !!}
</div>
<div class="form-group">
{!! Form::submit('Save',array('class'=>'btn btn-primary')) !!}
</div>
{{ Form::close() }}
When I go to url http://localhost:8000/patient/emergency-contacts/create it gives me error:
"Unsupported operand types"
You need to change 2 things
In your controller:
$surnames = DB::table('salutations')->pluck('name', 'id')->toArray();
So you get an array as [id => 'value'] and not only ['value']. In the View:
{!! Form::select('role', $salutation, null, ['class' => 'form-control']) !!}
{!! Form::select('relationship', ['Father', 'Mother', 'Husband','Wife','Son','Daughter','Uncle','Aunty','Other']) !!}
{!! Form::close() !!}
Always 'escape' the Form tags, if not, the HTML will be printed on screen, not parsed.
please use view('patient.emergencycontacts', ['salutation' => $surnames]);
To much apporoaches, my controller:
public function store(Request $request)
{
$this->validate($request, ['title' => 'required',
'date' => 'required',
'image_1' => 'required|mimes:png,jpeg',
]);
$user = Auth::user()->id;
$report = new Report($request->all());
$report->author_id = $user;
$image = $request->file('image_1');
$destinationPath = 'uploads/reports';
$ext = $image->getClientOriginalExtension();
$fileName = rand(11111,99999).'.'.$ext;
$report->image_1 = $image->move($destinationPath, $fileName);
$report->save();
Session::flash('flash_message', 'Report added!');
return redirect('dash/reports');
}
and my create view is:
#extends('layouts.app')
#section('content')
<div class="container">
<h1>Crea un report</h1>
<p>I campi sono tutti obbligatori. In caso di difficoltà , fare riferimento ad <strong>eloquent</strong> l'assistente virtuale.</p>
<hr/>
{!! Form::open(['url' => '/dash/reports', 'files' => true, 'class' => 'form-horizontal']) !!}
<div class="form-group {{ $errors->has('title') ? 'has-error' : ''}}">
{!! Form::label('fake', 'Nome e cognome', ['class' => 'col-sm-3 control-label']) !!}
<div class="col-sm-6">
<input class="form-control" id="disabledInput" type="text" placeholder="{{ $author->name }} {{ $author->surname}}" disabled>
</div>
</div>
<div class="form-group {{ $errors->has('title') ? 'has-error' : ''}}">
{!! Form::label('title', 'Servizio', ['class' => 'col-sm-3 control-label']) !!}
<div class="col-sm-6">
{!! Form::text('title', null, ['class' => 'form-control', 'required' => 'required']) !!}
{!! $errors->first('title', '<p class="help-block">:message</p>') !!}
</div>
</div>
<div class="form-group {{ $errors->has('title') ? 'has-error' : ''}}">
{!! Form::label('date', 'Data', ['class' => 'col-sm-3 control-label']) !!}
<div class="col-sm-6">
{!! Form::text('date', \Carbon\Carbon::now()->format('d/m/Y'), ['class' => 'form-control', 'required' => 'required']) !!}
{!! $errors->first('date', '<p class="help-block">:message</p>') !!}
</div>
</div>
<div class="form-group {{ $errors->has('category_id') ? 'has-error' : ''}}">
{!! Form::label('category_id', 'Cliente', ['class' => 'col-sm-3 control-label']) !!}
<div class="col-sm-6">
{!! Form::select('category_id', $category, null, ['class' => 'form-control'] ) !!}
{!! $errors->first('category_id', '<p class="help-block">:message</p>') !!}
</div>
</div>
<div class="form-group {{ $errors->has('image_1') ? 'has-error' : ''}}">
{!! Form::label('image_1', 'Upload report cartaceo', ['class' => 'col-sm-3 control-label']) !!}
<div class="col-sm-6">
<p>Solo immagini .jpg/.png</p>
{!! Form::file('image_1', null, ['class' => 'form-control', 'required' => 'required']) !!}
{!! $errors->first('image_1', '<p class="help-block">:message</p>') !!}
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-3 col-sm-3">
{!! Form::submit('Create', ['class' => 'btn btn-primary form-control']) !!}
</div>
</div>
{!! Form::close() !!}
#if ($errors->any())
<ul class="alert alert-danger">
#foreach ($errors->all() as $error)
<li>{{ $error }}</li>
#endforeach
</ul>
#endif
</div>
#endsection
Now, if I submit a form with a error, nothing appear, why? Also, my "session flash" does not work, i just use the apzzcoder/crud generator, i just follow the guide. Validation work correctly, but nothing appear
I have a problem using #yield from one view to another. I couldn't get anything from my question.blade.php file, even if using just a simple text.
My create.blade.php file:
#extends('layout/layoutAdmin')
#section('content')
<div class="container">
<h1>Add a new inventory</h1>
{!! Form::open(['url' => 'admin/menu/inventories/', 'method' => 'POST']) !!}
<div class="row">
<div class="form-group col-xs-8 col-md-7 {!! $errors->has('text') ? 'has-error' : '' !!}">
{!! Form::label('text', 'Name:') !!}
{!! Form::text('text', null,['class' => 'form-control']) !!}
{!! $errors->first('text', '<span class="help-block">:message</span>') !!}
</div>
<div class="form-group col-xs-8 col-md-7">
{!! Form::label('description', 'Description:') !!}
{!! Form::textarea('description', null, ['class' => 'form-control']) !!}
</div>
#yield('content2')
</div>
</div>
{!! Form::close() !!}
#stop
And my question.blade.php file:
#extends('inventory.create')
#section('content2')
<div class="form-group col-xs-8 col-md-7">
{!! Form::label('type', 'Type:') !!}
{!! Form::number('type', null, ['class' => 'form-control']) !!}
</div>
<div class="form-group col-xs-8 col-md-7 {!! $errors->has('introduction') ? 'has-error' : '' !!}">
{!! Form::label('introduction', 'Introductory Text:') !!}
{!! Form::textarea('introduction', null, ['class' => 'form-control']) !!}
{!! $errors->first('introduction', '<span class="help-block">:message</span>') !!}
</div>
<div class="form-group col-xs-8 col-md-7">
{!! Form::label('value', 'Values:') !!}
{!! Form::textarea('value', null, ['class' => 'form-control']) !!}
</div>
<div class="form-group col-xs-8 col-md-7 {!! $errors->has('language') ? 'has-error' : '' !!}">
{!! Form::label('language', 'Language:') !!}
{!! Form::text('language', null, ['class' => 'form-control']) !!}
{!! $errors->first('language', '<span class="help-block">:message</span>') !!}
</div>
<div class="form-group col-xs-8 col-md-7">
{!! Form::label('is_active', 'Active:') !!}
{!! Form::checkbox('is_active', null, ['class' => 'form-control']) !!}
</div>
#stop
My QuestionController:
public function create()
{
return view('inventory.question');
}
Route:
Route::get('admin/menu/inventories/new/question', 'QuestionController#create');
Edit: fixed the typo
You are yielding to a section called container2 and you have placed your content in a section called content2.