imperium2335
imperium2335

Reputation: 24112

Using Laravel 5 with AngularJS blade tag conflict

I am trying to setup Angular with Laravel 5.

I have tried doing in appServiceProvider:

public function boot()
{
    \Blade::setRawTags("[[", "]]");
    \Blade::setContentTags('<%', '%>'); // for variables and all things Blade
    \Blade::setEscapedContentTags('<%%', '%%>'); // for escaped data
}

With:

<div>
  <input type="text" ng-model="yourName" placeholder="Enter a name here">
  <h1>Hello, {{ yourName }}!</h1>
</div>

But I'm getting:

Use of undefined constant yourName - assumed 'yourName'...

Upvotes: 11

Views: 9909

Answers (4)

Scott Byers
Scott Byers

Reputation: 3205

Laravel >= 5.3

While adding @ in front of the braces does still work, Laravel has also included another handy blade utility that lets you mark an entire block as-is:

@verbatim
<div>
    {{ ctl.variable1 }}
    {{ ctl.variable2 }}
</div>
@endverbatim

Particularly helpful if you're not doing much with the Blade template rendering

Upvotes: 4

Paul A.T. Wilson
Paul A.T. Wilson

Reputation: 860

The easiest way to do this is to simply use @ in front of your Angular code:

 <div>
  <input type="text" ng-model="yourName" placeholder="Enter a name here">
  <h1>Hello, @{{ yourName }}!</h1>
</div>

source

Upvotes: 47

Uttam Panara
Uttam Panara

Reputation: 549

Else you modify angular syntax...

var sampleApp = angular.module('sampleApp', [], function($interpolateProvider) {
    $interpolateProvider.startSymbol('<%');
    $interpolateProvider.endSymbol('%>');
});

Upvotes: 0

lukasgeiter
lukasgeiter

Reputation: 152870

When doing changes that have to do with Blade (Extending Blade, changing the tags etc) always make sure to delete the cached views.

They're located in storage/framework/views.

Just delete all files (except the .gitignore)

If you want something a bit more practical you can create a command to do that. Like this one

Upvotes: 4

Related Questions