Solucionado (ver solução)
Solucionado
(ver solução)
12
respostas

Quando coloco a chamada {{ mensagem }} apresenta erro

Undefined variable: mensagem (View: /Users/cpb/Desktop/Cadastro/controle-series/resources/views/series/index.blade.php)

/Users/cpb/Desktop/Cadastro/controle-series/storage/framework/views/5024336e314ad3c625c019996474e704bc180fe5.php

<?php $__env->startSection('cabecalho'); ?>
Séries
<?php $__env->stopSection(); ?>

<?php $__env->startSection('conteudo'); ?>
<div class="alert alert-success">
    <?php echo e($mensagem); ?>

</div>

        <a href="/series/criar" class="btn btn-dark mb-2">Adicionar</a>

        <ul class='list-group-item'>
            <?php $__currentLoopData = $series; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $serie): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?>
            <li class="list-group-item"><?php echo e($serie->nome); ?></li>
            <?php endforeach; $__env->popLoop(); $loop = $__env->getLastLoop(); ?>
        </ul>
<?php $__env->stopSection(); ?>

<?php echo $__env->make('layout', \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path']))->render(); ?><?php /**PATH /Users/cpb/Desktop/Cadastro/controle-series/resources/views/series/index.blade.php ENDPATH**/ ?>
Arguments
"Undefined variable: mensagem (View: /Users/cpb/Desktop/Cadastro/controle-series/resources/views/series/index.blade.php)"
12 respostas

Oi Alan, tudo bom?

Compartilha com a gente o código do controller/action que renderiza essa view? =)

Pela exception, a gente só consegue ver o arquivo php renderizado no fim da requisição.

Porém, se a variável não existem na view é porque ou não estamos passando no controller ou estamos passando com alguma diferença.

Ah, uma boa abordagem também é limpar o cache =)

Abraço

<?php

namespace App\Http\Controllers;

use App\Serie; use Illuminate\Http\Request;

class SeriesController extends Controller {

public function index(Request $request)
{
    $series = Serie::query()
        ->orderBy('nome')
        ->get();

    $mensagem = $request
        ->session()
        ->get('mensagem');

    $request->session()->remove('mensagem');



    return view('series.index', compact('series', 'mensagem'));
    //$html = "<ul>";
    //foreach ($series as $series){
    //  $html .= "<li> $series</li>";
    //}
    //$html .= "</ul>";

    //return $html;
}
public function create()
{
    return view('series.create');
}

public function store(Request $request)
{
    $serie = Serie::create($request->all());
    $request->session()
        ->flash(
            'mensagem',
            "Série {$serie->id} criada com sucesso: {$serie->nome}"
        );


    return redirect('/series');
}

}

Já avaliei código inteiro e já limpei o cache da máquina e mesmo assim o erro persiste.

A mensagem de erro que está aparecendo eu acho que é por causa da da sintaxe {{ $mensagem }}

Dizendo que essa leitura não existe, eu acredito que seja isso..

Olá Alan!

Caso você queira, pode tentar a seguinte abordagem:

Exemplo:

1- Em web.php, usar rotas nomeadas:

Route::get('series', 'SeriesController@store')->name('series.listar'); 
Route::post('series', 'SeriesController@store')->name('series.store');

2- No SeriesController.php, verificar se a serie foi criada e em seguida, retorna para a pagita usando redirect com o nome da rota e com o metodo "with".

Dessa forma, é iniciada uma session

$serie = Serie::create($request->all());
if ( $serie){
    return redirect()->route('series.stores')->with('mensagem', 'Serie criada com sucesso');
}

3 - Na sua view, você pode fazer a verificação para que a mensagem aparece para o usuário da seguinte maneira:

@if (session('mensagem'))
    <div class="alert alert-success">
        {{ session('mensagem') }}
    </div>
@endif

4 - Caso ainda não funciona, limpe o cache e reinicie o artisan serve.

Não adiantou nada :'(

Oi Alan, você consegue subir o código do seu projeto em um git? ou compartilhar com a gente aqui um zip? Assim eu consigo rodar ele aqui e debugar melhor pra te direcionar =)

Abraço

este é o e-mail para contato: Alura forum@alura.com.br ?

Oi pessoal só passei por aqui para compartilhar como criar um repositório e subir arquivos no Github sem precisar de linha de comando nem nada. (Porque se pesquisar no google vão querer que você saia dando comandos rsrsrs). Desconheço esse email forum@alura.com.br , não sei se existe.

Primeiro de tudo crie uma conta no Github e logue nela. E vá seguindos os passos em azul. Alguma dúvida é só me perguntar. Clique no botão verde New ou arraste os arquivos se não estiver pegando bem a estrutura de pastas pegue a url que está aparecendo na barra de url

Espero ter ajudado!!!

segue o link amigo: https://github.com/alanmarques/Estudos

solução!

Fala, Alan! Beleza?

Parece ter uns caracteres esquisitos aqui: https://github.com/alanmarques/Estudos/blob/master/SeriesController.php#L25

De qualquer forma, nesta aula a gente envolve a exibição da mensagem em um if:

@if(!empty($mensagem))
<div class="alert alert-success">
    {{ $mensagem }}
</div>
@endif

Apaguei a linha e escrevi novamente, e deu certo!

Muito obrigado a todos pela ajuda! :)

Disponha e bons estudos!!!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software