Im am a beginner in Laravel, running version 5.2.16. I have been using PHP for quite some time but i have to get used to the MVC structure.
I have successfully added the optional dependancy for Html and Form, and they work.
I am trying to add a view where a client can register to my site, this view includes various forms. Now, when i try to route the view (register.blade.php) to the controller (RegisterController.php) I keep getting errors.
I suspect that I use the namespaces wrong, or that i doesn't "Use" the right things.
routes.php:
Route::get('register', 'RegisterController#showRegister');
RegisterController.php:
<?php
namespace App\Http\Controllers;
class RegisterController extends Controller {
public function showRegister()
{
return view('register');
}
}
In my config/app.php file i have added: (Should this be Illuminate instead of Collective?)
'providers' => [
...
Collective\Html\HtmlServiceProvider::class,
'aliases' => [
...
'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,
After i have made these changes i run:
$ composer update
$ php artisan cache:clear
$ php artisan route:clear
However, this still gives med the error:
Fatal error: Class 'Form' not found (View: /Applications/MAMP/htdocs/myProject/resources/views/register.blade.php)
Any ideas?
My files are setup as this
Within Laravel versions < 5.0 FormFacade is already within your app/config/app.php but in Laravel versions > 5 you need to manually place the third party Facades like as
Begin by installing this package through Composer. Edit your project's composer.json file to require laravelcollective/html.
"require": {
"laravelcollective/html": "~5.0"
}
Next, update Composer from the Terminal:
composer update
Next, add your new provider to the providers array of config/app.php:
'providers' => [
// ...
'Collective\Html\HtmlServiceProvider',
// ...
],
Finally, add two class aliases to the aliases array of config/app.php:
'aliases' => [
// ...
'Form' => 'Collective\Html\FormFacade',
'Html' => 'Collective\Html\HtmlFacade',
// ...
],
Docs
Related
I did a Laravel 5.5.43 installation this morning with the following Composer command:
composer create-project laravel/laravel project-name
I then ran the following command in the project folder to install Laravel Collective:
composer require "laravelcollective/html":"^5.4.0"
I then added the following under providers in config/app.php:
Collective\Html\HtmlServiceProvider::class,
And I added the following under aliases in config/app.php:
'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,
After that, I wanted to create custom form components, so I ran the following Artisan command:
php artisan make:provider FormServiceProvider
And in that new provider file, I added the following line to the boot method:
Form::component('customText', 'components.form.text', ['name', 'value' => null, 'attributes' => []]);
Lastly, I added the following to providers in config/app.php:
App\Providers\FormServiceProvider::class,
When I do that though and refresh the Laravel instance from the browser, I get the following error:
Class 'App\Providers\Form' not found
However, if I add the following at the top of the FormServiceProvider.php file, then it works:
use Collective\Html\FormFacade AS Form;
I understand the concept of namespaces and why that makes the Form::component method in the boot method in the file properly work, but what I don't get is why I need to add that use line to the file at all.
Isn't the 'Form' => Collective\Html\FormFacade::class, line in the aliases array in the app.php file supposed to do that for me so I don't need to add the use line to the FormServiceProvider.php at all? What am I missing / doing wrong / not understanding?
Thank you.
I probably should just delete this question, but the simple answer was to add the following at the top of the FormServiceProvider.php file:
use Form;
Thanks.
Run below command:
php artisan config:cache
php artisan cache:clear
I'm having trouble with importing a css style sheet located in public/css in a blade file located in resources/views/includes.
The code I used in the blade file is
{{ HTML::style('css/layout.css') }}
which didn't work. I also tried
{{ HTML::style('css/layout.css', array('media' => 'print')) }}
The error I get is Class 'HTML' not found
I followed the steps in this question, so
I added "laravelcollective/html": "5.4.16" in composer.json
run composer update
added in config/app.php
'providers' => [
Collective\Html\HtmlServiceProvider::class,
]
and
'aliases' => [
'Form' => Collective\Html\FormFacade::class,
'HTML' => Collective\Html\HtmlFacade::class,
]
Now the error I get is
Class 'Collective\Html\HtmlServiceProvider' not found
And I don't understand why, as I added it to app.php. Indeed, when I go to app.php and the line where I added Collective.., the "Html" is colored in red and when I hover over it it says
Undefined namespace Html
What should I do about it? All this laravel thing is getting confusing to me.
Apart from the fact that I don't know what to do with,
{{HTML::linkAction('MemberController#show', 'view', array($value->id))}}
i found nothing online regarding the arguments of "linkAction"
1:Remove "laravelcollective/html": "5.4.16" in composer.json and clean other config for this package in config/app.php.
2:Run composer update
3:Run composer require laravelcollective/html
4:Add 'Collective\Html\HtmlServiceProvider::class', in config/app.php (providers)
5:Add 'Form' => Collective\Html\FormFacade::class, and 'Html' => Collective\Html\HtmlFacade::class, in config/app.php (aliases)
6:In controller try use Html; and use Form;
If you get any other error please share composer.json and config/app.php.
I am trying to create an xml file using Orchestral/parser
https://github.com/orchestral/parser
I correctly installed it and called it like this in my Controller:
use Orchestra\Parser\Xml\Facade as XmlParser;
...
class Product extends Controller
{
public function createProduct()
{
$xml = XmlParser::load("test.xml");
$xmlR = $xml->parse([
'id' => ['uses' => 'xmlR.id'],
]);
}
}
But I get following error message:
ReflectionException in Container.php line 741: Class
orchestra.parser.xml does not exist
Thus I do not really understand what load means(in my case load("test.xml").
Did you try to refresh the autoload with command: composer dump-autoload
Your error clearly points that you did not set up the package in your config/app.php file (by listing the provider for the Orchestral XML Parser).
To resolve it, do add Orchestra\Parser\XmlServiceProvider::class to the list of providers in your config/app.php file as illustrated below:
'providers' => [
// Other Laravel service providers
Orchestra\Parser\XmlServiceProvider::class,
],
clearing the cache fixed my problem:
php artisan cache:clear
php artisan config:cache
I am using Laravel 5.1. I am following a tutorial that is made in Laravel 5. I am working with form but it's not working properly.
I'm facing this error:
FatalErrorException in 44a7f556a7d1beef3d09ba2ba2e3c7f0 line 7: Class 'form' not found
How do I fix this?
Update composer.json (require part)
"laravelcollective/html": "5.1.*"
Run command , to update
composer update
Add to providers array
Collective\Html\HtmlServiceProvider::class,
Add to aliases array
'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,
Class 'Illuminate\Html\HtmlServiceProvider' not found laravel 5.0
Simply follow 4 step
1) Go root directory find and edit composer.json - In that file write "illuminate/html": "^5.0" in require array.
2) Goto cmd and goto your folder directory and ** composer update **run this command
3) Next, add your new provider to the providers array of config/app.php:
'providers' => [
'Collective\Html\HtmlServiceProvider',
],
4) Finally, add two class aliases to the aliases array of config/app.php:
'aliases' => [
'Form' => 'Collective\Html\FormFacade',
'Html' => 'Collective\Html\HtmlFacade',
],
After all this finished
Restart your laravel server :-- php artisan serve --port=8880
Now you can use Any Html tag in your view blade
For me, it was a much stupider mistake that I was making (although the provided answer works perfectly for the real issue).
What I was doing was continually editing the wrong composer file. I had one composer file outside of my laravel directory that was obviously not going to make any difference in my application.
When I did all of the recommended updated to the real composer file, everything worked fine.