Estoy tratando de usar variables de JavaScript dentro de laravel blade.

Pero estoy recibiendo este error.

¿Qué debo hacer para usar esto?

var activeTab = $("ul#tablist li.active");
var floor = {!! \App\Floor::find(activeTab.attr('id')) !!}

Uso de activeTab constante indefinido: se supone 'activeTab'

-1
Murat Kaya 25 abr. 2017 a las 14:15

2 respuestas

La mejor respuesta

Ok, entonces puedes tener otra ruta como esta:

    Route::post('/getFloorById', [
        'uses'  => 'YourController@getFloorById',
        'as'    => 'getFloorById'
    ]);

Luego, en su controlador tiene el método:

private function getFloorById($segments)
{
    $floorId = $segments[1];
    return \App\Floor::find($floorId);
}

Y por último, necesitas tu código javascript:

var floor = $.post('/getFloorById', {"id": activeTab.attr('id')});

Este es el método ajax. Tenga en cuenta que es posible que necesite usar echo en lugar de un return. Y es posible que deba incluir su código en json_encode(\App\Floor::find($floorId)) de esta manera, pero en su mayor parte esto debería hacer el trabajo.

Es posible que desee llamar a la publicación desde un evento onclick de esa manera obtiene el nuevo objeto cada vez que cambia la pestaña.

1
Daniel 25 abr. 2017 a las 12:21

Desafortunadamente, blade es solo un marco para generar php. No necesita hacer eso, y de todos modos no podrá hacerlo. Ese sería un gran problema de seguridad.

Si realmente necesita que floor use lo que @Rohan sugirió, javascript directamente:

var floor = activeTab.attr('id');
0
Daniel 25 abr. 2017 a las 11:28