Laravel 5 using HTML package - laravel

i'm trying to use this link http://laravelcollective.com to install HTML and Form helper on laravel 5, after install that with composer like with
"require": {
"laravelcollective/html": "~5.0"
}
and update composer i'm add this lines on app.php file:
'providers' => [
/* -------- */
'Collective\Html\HtmlServiceProvider',
],
'aliases' => [
/* -------- */
'Form' => 'Collective\Html\FormFacade',
'Html' => 'Collective\Html\HtmlFacade',
],
and use from Html on view like with :
{{!! HTML::image(Captcha::img(), 'Captcha image',array('id'=>'captcha')) !!}}
I get this error:
Class 'HTML' not found

It's case-sensitive.
You need to change it to something like:
Html::image(Captcha::img(), 'Captcha image',array('id'=>'captcha'))
Also, use double curly braces {{ }} if you want to escape your HTML. In this case, you probably want to use {!! !!}. I'm not sure why you are doing both.
Edit: As noted by #ceejayoz, you can change the alias if you want to. So, for example, if you change your alias in your config/app.php file to all caps like this:
'HTML' => 'Collective\Html\HtmlFacade',
Then, you can do this (to reflect your alias):
{!! HTML::image(Captcha::img(), 'Captcha image',array('id'=>'captcha')) !!}

Related

Textarea in laravel 5.4

I have to print the reponse of API in textarea UI (blade.php) in laravel 5.4.
Tried doing:
{{ Form::textarea('response', '3 < 4') }}
But it gives the following error:
(1/1) FatalErrorException
Class 'Form' not found
What can I do to achieve this. In short I want an response textarea like it is in restclient.
Thanks !
You need to install Laravel FormCollective.
Run the following command from the Terminal: composer require "laravelcollective/html":"^5.2.0"
Next, add your new provider to the providers array of config/app.php:
'providers' => [
// ...
Collective\Html\HtmlServiceProvider::class,
// ...
],
Finally, add two class aliases to the aliases array of config/app.php:
'aliases' => [
// ...
'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,
// ...
],
Then, you can use {{ Form::textarea('response', '3 < 4') }} in your blade file!
Hope you understand!
The Form class is not a part of the default install of Laravel 5.
Please refer to installation here: https://laravelcollective.com/docs/master/html

Class 'Form' not found in Laravel 5.3?

In Laravel 5.2 form class in app.php is:
'aliases' => [
// ...
'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,
// ...
],
But this code not work in Laravel 5.3.
How to add class Form in Laravel 5.3 ?
Its called the Laravel Collective package and It has been removed from laravel defaults.
You can still integrate and use it.
here is the documentation
Laravel Collective
How to Install
composer require "laravelcollective/html":"^5.3.0"
Next, add your new provider to the providers array of config/app.php:
'providers' => [
// ...
Collective\Html\HtmlServiceProvider::class,
// ...
],
Finally, add two class aliases to the aliases array of config/app.php:
'aliases' => [
// ...
'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,
// ...
],
1st step install this via composer
composer require "laravelcollective/html":"^5.3.0"
Laravel Collective here
2nd step add this line in config/app.php under providers
'providers' => [
// ...
Collective\Html\HtmlServiceProvider::class,
// ...
],
3rd step
add this 2 line in config/app.php under aliases array
'aliases' => [
// ...
'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,
// ...
],
final step then link your html and css this way
{{ Html::style('css/demo.css') }}
{{ Html::script('js/demo.js') }}

Laravel 5.2, LaravelCollective 5.2, Class 'Html' not found

I followed these steps but still getting "Html" class not found.
added in composer.json
"require": {
"laravelcollective/html": "5.2.*"
}
once installed, added these lines in config/app.php
'providers' => [
// ...
Collective\Html\HtmlServiceProvider::class,
// ...
],
'aliases' => [
// ...
'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,
// ...
],
please see attached screen shot. what can be the reason, I also tried composer dump-autoload composer clear-cache but it didn't resolve the issue
Updated
View sample code
{!!Html::style('assets/css/bootstrap.min.css')!!}
{!!Html::style('assets/css/custom.css')!!}
{!!Html::script('assets/js/jquery.min.js')!!}
{!!Html::script('assets/js/bootstrap.min.js')!!}
I just found the solution here, its worked perfectly.
Followed these steps
composer require laravelcollective/html
it will install html & form as per your installed Laravel version (mine 5.2)
Added Providers and Aliases
Open config/app.php In providers array add
Collective\Html\HtmlServiceProvider::class
and in aliases array add
'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class
Found solution here
http://laraveldeveloper.me/form-in-laravel-5-2/
Stackoverflow
https://stackoverflow.com/a/35169836/1216451
https://stackoverflow.com/a/34807375/1216451

translation not interpreted in Laravel 5

In laravel 5, when I write this in my view:
#include("places.form", ["submitButton" => #lang('crud.updateModel', ['currentModelName' => $currentModelName])])
I get this:
#lang('crud.addModel', ['currentModelName' => Lugar])
How can I do so that it can be interpreted?
Try:
#include("tournaments.form", ["submitButton" => trans('crud.addTournament')])
You will get:
["submitButton" => 'the translated text']
{{ }} and {!! !!} are just a wrapper around <?php echo ?> therefore in all Blade directives you don't have to add it use type as if you are typing in PHP file! use you translation function without curly brackets, and you don't need the double quotations too:
#include("tournaments.form", ["submitButton" => trans('crud.addTournament') ])

Laravel 5 Class 'HTML' not found

I am attempting to use Laravel 5 but my {{ HTML::style('style.css') }} No longer works.
I have updated composer.json to include "illuminate/html": "5.*" under require. I have added 'Illuminate\Html\HtmlServiceProvider' to my providers array under app.php and I have added
'Form'=> 'Illuminate\Html\FormFacade',
'HTML'=> 'Illuminate\Html\HtmlFacade'
as well. I then ran composer updateI have restarted WAMP to make sure and it still does not work. I have also tried to use {!! HTML::style('style.css') !!} which did not work either. What else do I need to do to get this back?
Anybody who are using laravel 5.* have to use laravelcollective/html because Package illuminate/html is abandoned, you should avoid using it.
your composer.json file should contain following code in require section(as i am using laravel 5.2 it will be mentioned as 5.2)
"laravelcollective/html": "5.2.*"
run composer update
and your config/app.php should contain following code in providers array
'providers' => [
Collective\Html\HtmlServiceProvider::class,
]
and aliases should contain
'aliases' => [
'Form' => Collective\Html\FormFacade::class,
'HTML' => Collective\Html\HtmlFacade::class,
]
and please note that whatever aliase you mentioned should appear in your code as
{{HTML::linkAction('MemberController#show', 'view', array($value->id))}}
'HTML'=> 'Illuminate\Html\HtmlFacade'
should be
'Html'=> 'Illuminate\Html\HtmlFacade'
I think it's a case sensitive problem.
If you register it as 'HTML'=> 'Illuminate\Html\HtmlFacade' in app.php, you can't use it as html or Html ( then it will only work when you use HTML).
{!! Html::style( asset('public/css/artist.css')) !!}
... worked for me, but this
{{ HTML::style( asset('css/artist.css')) }}
... did not worked. But it should work. No!
Laravel is confusing me more from day to day. I try to learn this ... Notwell :D
1 follow
https://laravelcollective.com/docs/5.3/html
Begin by installing this package through Composer. Run the following from the terminal:
composer require "laravelcollective/html":"^5.3.0"
Next, add your new provider to the providers array of config/app.php:
'providers' => [
// ...
Collective\Html\HtmlServiceProvider::class,
// ...
],
Finally, add two class aliases to the aliases array of config/app.php:
'aliases' => [
// ...
'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,
// ...
],
Now if you want
{{ HTML::style('css/bootstrap.min.css') }}
or
{!! HTML::style('css/bootstrap.min.css') !!}
//2 way follow.
{{ HTML::style('css/bootstrap.min.css') }}
//change to
{{ Html::style('css/bootstrap.min.css') }}
or
'aliases' => [
// ...
'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,
// ...
],
//change to
'aliases' => [
// ...
'Form' => Collective\Html\FormFacade::class,
'HTML' => Collective\Html\HtmlFacade::class,
// ...
],
for more see this video tutorial.....
https://www.youtube.com/watch?v=yl6hkoaCS6g
Add to composer.json:
a) "illuminate/html": "5.*"
b) Run Command:- composer update
Add to the app.php providers array:
a) 'Illuminate\Html\HtmlServiceProvider',
Add to the app.php aliases array:
a) 'Html' => 'Illuminate\Html\HtmlFacade',
b) 'Form' => 'Illuminate\Html\FormFacade',
Done
In the Laravel 5 "illuminate/html": "5.*" is deprecated and replaced with new dependency "laravelcollective/html": "~5.0"
Begin by installing this package through Composer. Edit your project's composer.json file to require "laravelcollective/html"
In your composer.json file update the following:
"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',
// ...
],
You can also check it here for Laravel 5
https://laravelcollective.com/docs/5.0/html
If you must not use HTML Facade, do this for simplicity:
<link rel="stylesheet" href="{!! asset('style.css') !!}">
Follow this documentation how to fix it:
https://laravelcollective.com/docs/5.4/html
For each version you change the version number to access the appropriate doc e.g
https://laravelcollective.com/docs/5.x/html
x is the version
For those who are looking to configure Laravel 5 with macros:
composer require laravelcollective/html
In /config/app.php, under "providers": App\Providers\MacroServiceProvider::class
Create MacroServiceProvider.php under /app/Providers:
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class MacroServiceProvider extends ServiceProvider {
public function boot()
{
foreach (glob(base_path("resources/macros/*.macro.php")) as $filename) {
require_once($filename);
}
}
public function register()
{
//
}
}
Add any macros in the folder /resources/macros in the format *.macro.php. Note the needed $this->toHtmlString in order to escape the string:
Html::macro("something", function() {
return $this->toHtmlString("Hi there");
});
Use macros in templates, as described here.
run this cmd to laravel installed folder
composer require "laravelcollective/html":"^5.4.0"
and use with public
{!! Html::style( asset('public/css/artist.css')) !!}
Use {{ URL::asset('style.css') }} instead of {{ HTML::style('style.css') }}
the app.php entries should be:
'providers' => [
// ...
Collective\Html\HtmlServiceProvider::class,
// ...
],
'aliases' => [
// ...
'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,
// ...
],
I did the same thing as you did: added laravelcollective in my composer, did composer update, added them in my providers and aliases but the code below did not work:
{{ HTML::image('img/picture.jpg') }}
However, I have this working for me
{{ Html::image('img/picture.jpg') }}
I think this is because this issue is case sensitive and that the class HTML vs class Html is being seen as entirely different from one another by this laravel version.
'providers' => [
Collective\Html\HtmlServiceProvider::class,
]
'aliases' => [
'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,
]

Resources