Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

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!!!