Question: parsing Laravel blade
lotsofbytes opened this issue · 1 comments
lotsofbytes commented
A laravel blade file is not really a html file. It includes program directives for conditions and loops.
But, because it starts with @ (like @foreach), the laravel directrives get escaped by domReplaceHelpers.
For example,
@foreach ($company->members as $m)
@if ($m->checkbox)
{{ $m->checkbox }}
@else
<span class="" title="{{ $m->profile }}">{{ $m->name }}</span>
@endif
@endforeach
will be parsed to:
____SIMPLE_HTML_DOM__VOKU__AT____foreach ($company->members as $m)\n
____SIMPLE_HTML_DOM__VOKU__AT____if ($m->checkbox)\n
{{ $m->checkbox }}\n
____SIMPLE_HTML_DOM__VOKU__AT____else\n
<span class="" title="{{ $m->profile }}">{{ $m->name }}</span>\n
____SIMPLE_HTML_DOM__VOKU__AT____endif\n
____SIMPLE_HTML_DOM__VOKU__AT____endforeach\n
So, this works well for me to manipulate html parts of the blade file.
However, a case below messes it up:
@for ($i = 2; $i <= 6; $i++)
<div class="form-group">
<label for="file{{ $i }}" class="col-md-2 control-label">添付
{{ $i }}</label>
<div class="col-md-10">
<input type="file" name="file{{ $i }}" id="file{{ $i }}">
<input id="filename{{ $i }}" type="hidden" name="filename{{ $i }}"
value="">
{{ HTML::error($errors, 'file{$i}') }}
</div>
</div>
@endfor
You see below, the for part gets truncated.
____SIMPLE_HTML_DOM__VOKU__AT____for ($i = 2; $i \n
<label for="file{{ $i }}" class="col-md-2 control-label">添付\n
{{ $i }}</label>\n
<div class="col-md-10">\n
<input type="file" name="file{{ $i }}" id="file{{ $i }}"/>\n
<input id="filename{{ $i }}" type="hidden" name="filename{{ $i }}" value=""/>\n
<x-error name="file{$i}"/>\n
</div>\n
</x-form></div>\n
____SIMPLE_HTML_DOM__VOKU__AT____endfor\n
I believe that because 'i <= 6' includesa html starting tag: <.
I wonder if there is anyway to prevent this from happening.
Thanks in advance.
lotsofbytes commented
@voku, Do you have any suggestion?