Undefined variable: id

0

Contextualization Home It is necessary for the user to register new locations in the project through the multiple selection box. As will be several locales I do not know how ajax and php process this data. Home The following image shows the modal Locales with the multiple check box. The data on the left are all registered locations and the one on the right are the locations selected by the user (new localities will be registered). By pressing the save button the data to the right will be saved to the database.

Error:HomeWheneditingaprojectthefollowingerrorappears:

  

"Undefined variable: id"

Doubt:HomeHowdoIgetthedatafromthenewsavedlocalitiesoftheprojectanddisplayinthemultipleselectionbox(ontherightside)?

Codes:

HtmlPage:edita.blade.php-modalwithMultipleLocationscheckbox

<!--IniciodomodaldeLocalidades--><divclass="modal fade modal-default" id="modalLocalidade" aria-hidden="true" aria-labelledby="examplePositionCenter"
                 role="dialog" tabindex="-1">
                <div class="modal-dialog modal-center">
                    <div class="modal-content">
                        <div class="modal-header">
                            <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                                <span aria-hidden="true">×</span>
                            </button>
                            <h4 class="modal-title">Localidades</h4>
                        </div>
                        <div class="modal-body">

                            <div class="form-group col-md-18" style="display:flex">

                                <select multiple  class="esq  col-md-6" name="localidadesAtivas" required>
                                    @foreach($localidadesAtivas as $localidadeAtiva)
                                    <option value="{{$localidadeAtiva->id}}" {{$localidadeAtiva->id == $projeto->localidade_id ? 'selected' : ''}}>{{$localidadeAtiva->localidade}}</option>
                                    @endforeach   
                                </select>          

                                <div style="display:flex; flex-direction:column">
                                    <button class="dir">▶</button>
                                    <button class="esq">◀</button>
                                </div>

                                <select multiple class="dir col-md-6" name="localidadesAtivasSelects">
                                @foreach($localidadesProjeto as $localidadeProjeto)
                                <option value="{{$localidadeProjeto->id}}" {{$localidadeProjeto->id == $projeto->localidade_id ? 'selected' : ''}}>{{$localidadeProjeto->localidade}}</option>

                                @endforeach  
                                </select>
                           </div>

                        </div><!--Fim do modal-body-->

                        <div class="modal-footer">
                        <center>
                            <a id="btnSalvar" type="button" class="btn btn-primary cadNovaLocalidade" data-dismiss="modal"  align="center" style="width: 300px; height: 40px">Salvar</a>
                        </center>
                        </div>
                    </div>
                </div>
            </div>
  <!--Fim do modal de Localidades-->  


Controller ProjectController.php: method edit ($ id, Request $ request)

 <?php

namespace App\Http\Controllers\Admin;

use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Hash;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\User;
use App\Helpers\helpers;
use App\Models\Projeto;
use App\Models\Setor;
use App\Models\Proponente;
use App\Models\TipoProjeto;
use App\Models\Localidade;
use App\Models\ModalidadeApoio;
use App\Models\LocalidadeProjeto;




class ProjetoController extends Controller
{
    private $projeto;
    private $novoProjeto; 
    public  $flagStatusDoc;  //$autorizaDoc é uma flag que por default é false, se torna verdadeira quando a documentação é aprovada
    public $flagAprovacao; //$flagAprovacao é uma flag que por default é false, se torna verdadeira quando o projeto é aprovado


    //Construtor do projeto
    public function __construct(Projeto $projeto)
     {
         $this->projeto = $projeto;  
         $this->flagStatusDoc = false;  
         $this->flagAprovacao = false;
     }

     //Redireciona os dados do projeto para a página principal
     public function index(Request $request)
     {
         $permissao = verificarPermissao('Projetos');
         $projetos = Projeto::all();
         return view('admin.projeto.index',['projetos' => $projetos, 'permissoesPerfil' => $permissao]); 
     }

    //Este método apresenta o formulário para cadastrar um novo projeto
    public function novo()
    {
        $this->flagStatusDoc = false;
        $this->flagAprovacao = false;

        $setores = Setor::all();
        $proponentes = Proponente::all(); 
        $tipoProjetos = TipoProjeto::all(); 
        $modalidadeApoios = ModalidadeApoio::all();
        $localidades = Localidade::all(); 
        $permissoesAprovacao = verificarPermissao('Aprovação');
        $permissoesJuridico = verificarPermissao('Juridico');
        $permissoesGestaoContrato = verificarPermissao('Gestão Contratos e Convênios');
        $permissoesFinanceiro = verificarPermissao('Financeiro');
        $permissoesOcorrencia = verificarPermissao('Ocorrência'); 
        $permissoesAbas= verificarPermissao('Abas do Projeto'); 
        $permissoesDadosGeraisProj= verificarPermissao('Dados Gerais do Projeto'); 

        return view('admin.projeto.novo',
        ['permissoesAprovacao' =>  $permissoesAprovacao, 'permissoesJuridico' => $permissoesJuridico,
        'permissoesGestaoContrato' =>  $permissoesGestaoContrato , 'permissoesFinanceiro' => $permissoesFinanceiro,
        'permissoesOcorrencia'=> $permissoesOcorrencia, 'permissoesDadosGeraisProj' => $permissoesDadosGeraisProj,
        'permissoesAbas' =>  $permissoesAbas, 'setores' => $setores, 'proponentes' => $proponentes, 
        'tipoProjetos' => $tipoProjetos,'localidades' => $localidades,'modalidadeApoios' => $modalidadeApoios, 
        'flagStatusDoc' => $this->flagStatusDoc , 'flagAprovacao' =>  $this->flagAprovacao 
        ]);
    }

     //Método para a consulta dos projetos
     public function consulta(Request $request){

        $condicoes = [];

        if($request->id != null){
            $condicoes[] = [DB::raw('upper(id)'), 'like', DB::raw('upper("%'.$request->get('id').'%")')];
        }

        if($request->nomeProjeto != null){
            $condicoes[] = [DB::raw('upper(nome_projeto)'), 'like', DB::raw('upper("%'.$request->get('nomeProjeto').'%")')];
        }

        if($request->tipoProcesso != null){
            $condicoes[] = [DB::raw('upper(tipo_processo)'), 'like', DB::raw('upper("%'.$request->get('tipoProcesso').'%")')];
        }

        if($request->dtInicio != null){
            $condicoes[] = ['dt_inicio', '=', $request->input('dtInicio')];
        }

        if($request->dtFim != null){
            $condicoes[] = ['dt_fim', '=', $request->input('dtFim')];
        }

        $request->flash(['ID','nomeProjeto', 'tipoProcesso', 'dtInicio', 'dtFim']);

        $projetos = Projeto::where($condicoes)->orderBy('nome_projeto')->get();
        //$rotas = Route::where($condicoes)->orderBy('rota')->get();
        $permissao = verificarPermissao('Projetos');

        return view('admin.projeto.index',['projetos' => $projetos, 'permissoesPerfil' => $permissao]); 
    }


      //Método para cadastrar os dados gerais do projeto 
      public function cadastro(Request $request, Projeto $projeto)
      {
        $novoProjeto =  $projeto->salvar($request->all());
        return redirect()->route('projeto.edita', $novoProjeto->id)->with('success','Sucesso ao cadastrar');;
      }



     //Método que  redireciona para a página de editar o  Projeto
     public function edita($id, Request $request)
     {  
        $localidadesProjeto = Localidade::join('localidades_projeto', function ($join) {
            $join->on('localidade.id','=','localidades_projeto.localidade_id')
            ->where('localidades_projeto.projeto_id','=', $id); })->distinct()->get(); 

        $projetoAutorizado = Projeto::findOrFail($id);
        $this->flagStatusDoc =   $projetoAutorizado->status_documentacao == 'A' ? true : false;
        $this->flagAprovacao = false;
        $usuarios = User::where('autoriza', '=', 'S')->get();
        $setores = Setor::all();
        $proponentes = Proponente::all(); 
        $tipoProjetos = TipoProjeto::all(); 
        $modalidadeApoios = ModalidadeApoio::all();
        $localidades = Localidade::all(); 
        $localidadesAtivas = Localidade::where('ativo', '=', 'S')->orderBy('localidade', 'asc')->get(); 
        $permissoesAprovacao = verificarPermissao('Aprovação');
        $permissoesJuridico = verificarPermissao('Juridico');
        $permissoesGestaoContrato = verificarPermissao('Gestão Contratos e Convênios');
        $permissoesFinanceiro = verificarPermissao('Financeiro');
        $permissoesOcorrencia = verificarPermissao('Ocorrência'); 
        $permissoesAbas= verificarPermissao('Abas do Projeto'); 
        $permissoesDadosGeraisProj= verificarPermissao('Dados Gerais do Projeto'); 
        $usuarioResponsavel = Auth::user()->name;
        $statusDocumentacao =  $projetoAutorizado->status_documentacao == 'P' ? 'Pendente' : 'Autorizado';
        $userAutorizaDoc = User::findOrFail($projetoAutorizado->usu_autoriza_doc_id); 
        $usuarioAutorizaDoc =   !empty($userAutorizaDoc) ?  $userAutorizaDoc->name : 'Nenhum' ;
        $countLocalidadesProjeto = count(LocalidadeProjeto::where('projeto_id','=',$id)->get());



        return view('admin.projeto.edita', ['projeto' => Projeto::find($id), 'permissoesAprovacao' =>  $permissoesAprovacao, 'permissoesJuridico' => $permissoesJuridico,
                'permissoesGestaoContrato' =>  $permissoesGestaoContrato , 'permissoesFinanceiro' => $permissoesFinanceiro,
                'permissoesOcorrencia'=> $permissoesOcorrencia, 'permissoesDadosGeraisProj' => $permissoesDadosGeraisProj,
                'permissoesAbas' =>  $permissoesAbas, 'setores' => $setores, 'proponentes' => $proponentes, 'tipoProjetos' => $tipoProjetos, 'usuarios' => $usuarios,
                'localidades' => $localidades,'modalidadeApoios' => $modalidadeApoios, 'usuarioResponsavel'=>$usuarioResponsavel,'statusDocumentacao'=>$statusDocumentacao,
                'usuarioAutorizaDoc'=> $usuarioAutorizaDoc,'localidadesAtivas'=> $localidadesAtivas, 'flagStatusDoc' =>$this->flagStatusDoc, 'flagAprovacao' =>  $this->flagAprovacao,
                'countLocalidadesProjeto' =>  $countLocalidadesProjeto, 'localidadesProjeto' => $localidadesProjeto]);
     }

        //Método para atualizar o Projeto
      public function atualiza(Request $request)
      {
        $projeto = Projeto::findOrFail($request->get('numProjeto'));
        $projeto->tipo_processo = $request->get('tipoProcesso');
        $projeto->processo = $request->get('numProcesso');                      
        $projeto->dt_protocolo =  $request->get('dtProtocolo');   
        $projeto->setor_origem_id = $request->get('setor');  
        $projeto->proponente_id = $request->get('proponente'); 
        $projeto->nome_projeto = $request->get('nomeProjeto');
        $projeto->dt_inicio = $request->get('dtInicio');
        $projeto->dt_fim = $request->get('dtFim');
        $projeto->dias_intercalados = $request->get('diasIntercalados'); 
        $projeto->tipo_projeto_id = $request->get('tipoProjeto'); 
        $projeto->modalidade_apoio_id = $request->get('modalidadeApoio'); 
        $projeto->localidade_id = $request->get('localidade'); 
        $projeto->valor_solicitado = $request->get('vlSolicitado');
        $projeto->arquivo_fisico = $request->get('arquivo');
        $projeto->dt_lancamento = \Carbon\Carbon::now();
        $projeto->dt_alteracao = null; 
        $projeto->usu_lancamento_id = auth()->user()->id; //recebe o id do usuário logado
        $projeto->usu_responsavel_id = auth()->user()->id; //recebe o id do usuário logado

        $response =  $projeto->alterar($projeto);  
          if($response['success'])
          {
              return redirect()
                        ->route('projeto.edita',$projeto->id) 
                        ->with('success',$response['message']);
          }else
          {
              return redirect()
                        ->back()
                        ->with('error',$response['message']); 

          }   
      }

        //Método para autorizar a documentação do Projeto
        public function autorizaDocumentacao(Request $request)
        {
            if (!$usuario = User::findOrFail($request->get('idUsuario')))
            return response()->json(['error' => 'Usuário não encontrado'], 404);

            if (!$projeto = Projeto::findOrFail($request->get('numProjeto')))
                return response()->json(['error' => 'Projeto não encontrado'], 404);

              $statusDoc =  $request->statusDoc;

            if (Hash::check($request->get('senha'), $usuario->password)){

                $projeto->status_documentacao = $statusDoc; //muda o status da documentação para "A"
                $projeto->usu_autoriza_doc_id = $usuario->id;//id do usuário que autorizou a documentação

                 // $usuarioAutorizaDocs = $usuario->name; // nome do usuário que autorizou a documentação
                $projeto->save();

                //A variável $statusDoc consulta se o status da documentação está autorizado para o usuário logado
                $statusDoc =  Projeto::where('status_documentacao','=','A','and','usu_responsavel_id','=', Auth::user()->id )->get();
                //A variável $flagStatusDoc é verdadeira se a $statusDoc não for nula caso ao contrário ela é verdadeira
                $this->flagStatusDoc =   $statusDoc !=  null ? true : false;


                return response()
                        ->json(['success' => 'Sucesso ao Autorizar Documentação'], 200); 
            } else {
                return response()
                            ->json(['error' => 'Senha Incorreta'], 422);
            } 
        }



        //Cadastra novas localidades
        public function localidadesAtivas(Request $request, Projeto $projeto)
        {
            $projeto = $projeto->find($request->numProjeto);
            if (!$projeto)
                return response()->json(['error' => 'Projeto não encontrado'], 404);

                $projeto->localidades_projeto()->attach($request->localidadesAtivasSelects);

            return response()
                        ->json([
                            'success' => 'Sucesso ao cadastrar novas localidades'
                            ]);
        }


    //Este método remove o projeto
   public function remove(Request $request)
   {
       $projeto = Projeto::find($request->id);

      if (!$projeto)
       return response()
                ->json(['error' => 'not_found'], 404);

      $response =  $projeto->deletar($projeto);  

      if($response['success'])
      {
       return response()
               ->json(['success' => $response['message']], 200);  

      }else
      {
         // Caso não delete, informa um erro inesperado
       return redirect()
                ->json(['error' => $response['message']], 500);        
      } 
   }
}

Method Edit ($ id, Request $ request)

    
asked by anonymous 26.04.2018 / 20:16

1 answer

0

When going to use an external variable inside a callback function in PHP you need to use it, eg: $ id = 123; method (function () use ($ id) {     echo $ id; });

Follow the method code excerpt edit of the class ProjectController.php

 $localidadesProjeto = Localidade::join('localidades_projeto', function ($join) use ($id) {
                            $join->on('localidade.id','=','localidades_projeto.localidade_id')
                            ->where('localidades_projeto.projeto_id','=',  $id ); })->distinct()->get();  
    
07.05.2018 / 14:42