Uso de publicación constante indefinida - 'publicación' asumida - códi

Uso de publicación constante indefinida - 'publicación' asumida - código php con html

¿Sabes por qué este código "<a href="{{route('posts.show', ['id' => 'post.id', 'slug' => post.slug])}}" class="btn btn-primary text-white">More</a>" en el siguiente código muestra Uso de publicación constante indefinida - 'publicación' asumida?

    $.each(result, function(index, post) {
            newPosts += '<div class="col-12 col-sm-6 col-lg-4 col-xl-3 mb-4">\n' +
'                        <div class="card box-shaddow">\n' +
+'                            <div class="card-body">\n' +
+'                                <h5 class="card-title h6 font-weight-bold text-heading-blue">'+post.name+'</h5>\n' +
+'                            </div>\n' +
'                            <div class="card-footer d-flex justify-content-between align-items-center">\n' +
'                                 <a href="{{route('posts.show', ['id' => 'post.id', 'slug' => post.slug])}}" class="btn btn-primary text-white">More</a>

'       <span class="font-weight-bold font-size-sm text-heading-blue"> </span>\n' +
'                            </div>\n' +
'                        </div>\n' +
'                    </div>';
        });
Mostrar la mejor respuesta

¿Qué sucede cuando {{ dd(route('posts.show', ['id' => 'post.id', 'slug' => post.slug])) }}

Espera un minuto. Ha marcado esto como PHP, pero se parece a Javascript/jQuery.

@PatrickQ Probablemente esté haciendo algo así como $('body').append(newPosts)

Está intentando usar JavaScript en un bloque de PHP. El bloque de PHP se procesa antes de que se ejecute JavaScript, por lo que no es posible hacerlo de la forma en que lo tiene ahora. Puede intentar poner valores ficticios en las variables id y slug y reemplazar la cadena en JavaScript antes de usar la variable newPosts.

No puede usar su objeto Javascript post como una variable en una llamada a la función route() de Blade. Blade renderizará la plantilla en el servidor antes de enviarla al navegador, mientras que su visitante ejecutará su código Javascript en su computadora mucho más tarde.

Una opción es dejar que Blade complete una variable que puede usar en Javascript, usando valores ficticios:

var placeholder = "{{route('posts.show', ['id' => 123, 'slug' => 'demo-slug'])}}";

$.each(result, function(index, post) {
    var url = placeholder.replace(123, post.id).replace('demo-slug', post.slug);

    newPosts += '[...]'
             +  '<a href="' + url + '" class="btn btn-primary text-white">More</a>'
             +  '[...]';
});

Los valores que usa como marcadores de posición dependen de cómo se ve su ruta y qué validaciones se usan (si las hay). Solo asegúrese de usar un texto de marcador de posición que aún no sea parte de su URI.