Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

kakaroto developer

[Resolvido] como fazer o select separado na view

Recommended Posts

Ola gente começei a trabalhar com cake a pouco tempo

mais to num beco sem saida

 

 

eu criei uma tabela categorias com esses campos

 

id categoria status

 

e uma tabela sub categorias com esse campos

 

id categoria_id sub_categoria

 

meu controle e esse aqui

<?

class SubCategoriasController extends AppController {

               var $name = "Sub_categorias";


               var $helpers = array('Html', 'Form','Javascript','Session');  // carregamos alguns helpers


               var $paginate = array('limit' => 2, 'page' => 1, 'order'=>array('SubCategoria.id'=>'asc'));
       // aqui definimos o limite de resultados por página, e a ordem da paginação


          function index()

          {



      $this->set('SubCategoria', $this->paginate());

// aqui foi tranquilo eu exibir os dados paginados




       }


     function incluir()

          {
         $subcategoria = $this->SubCategoria->find('list');


//   result aqui embaixo do comando assim

//    DESCRIBE `sub_categorias`		3	3	2
//2	DESCRIBE `categorias`		3	3	2
//3	SELECT `SubCategoria`.`id` FROM `sub_categorias` AS `SubCategoria` WHERE 1 = 1


       }



}




?>

meu modelo esta assim :

 

class Subcategoria extends AppModel {
  var $name = "sub_categoria"; //para tornar o script compinatível com php4
  var $belongsTo ='categoria';



}



?>

como eu ativo a funcao incluir para gerar uma select da categoria pq ela dar erro se eu colocar categoria dentro da funcao incluir:(

 

quando eu coloco assim no controle

 

$subcategoria = $this->Categoria->find('list');

 

o erro que dar e esse

 

// Notice (8): Undefined property: SubCategoriasController::$Categoria [APP\controllers\sub_categorias_controller.php, line 33]

//como eu chamo so as categorias aqui

 

 

alguem tem uma ideia de como e feito

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este erro é disparado porque você deve especificar os models que você quer que determinado controller utilize através da propriedade Controller::$uses;

Por exemplo: (note a propriedade $name também)

class SubCategoriaController extends AppController {
   var $name = 'SubCategorias'; // É SubCategorias mesmo, não Sub_categorias. O mesmo para o Model (que é "Subcategoria");
   var $uses = array('SubCategoria','Categoria'); // Dizemos que queremos utilizar estes models
}
Agora isso deverá funcionar:

$this->Categoria

Existe uma outra maneira. O seu model tem um relacionamento com Categoria certo? SubCategoria belongsTo Categoria. Deste modo, você pode acessar Categoria através de uma propriedade. Veja um exemplo:

$this->SubCategoria->Categoria->find('all');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beleza meu Velho

 

eu vou testar a solução que você me indicou e posto o resultado

agora que eu tava vendo esse site aqui e seu

 

mais o nome das tabelas dentro banco e :

 

categorias

sub_categorias

 

http://lucaspelegrino.com/

 

eu estou aprendendo cake la kkkkkkkkkkkkk

 

 

um abraço e ja retorno o resultado

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa bom dia lucas a tua dica funfou certinho

 

function incluir()

          {

        $valor=$this->SubCategoria->categoria->find('all');
        debug($valor);






       }

 

 

aqui embaixo o resultado do debug

 


app\controllers\subcategorias_controller.php (line 37)

Array
(
   [0] => Array
       (
           [categoria] => Array
               (
                   [id] => 1
                   [categoria] => Camisa polo
                   [status] => 1
               )

       )

   [1] => Array
       (
           [categoria] => Array
               (
                   [id] => 2
                   [categoria] => camisa listrada
                   [status] => 1
               )

       )

)



 

funfou na boa http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

 

eu so na entendi naquela parte que você falou dos model,ja que as tabelas sao categorias, sub_categorias mesmo

dentro do banco de dados :(

class SubCategoriaController extends AppController {
  var $name = 'SubCategorias'; // É SubCategorias mesmo, não Sub_categorias. O mesmo para o Model (que é "Subcategoria");
  var $uses = array('SubCategoria','Categoria'); // Dizemos que queremos utilizar estes models
}

 

 

obrigado pela dica

eu tava agora de manha procurando no seu blog algo para html helper

 

eu to montando um script jquery

que validar formulario

 

sendo que o input do formulario deveria sair assim e eu nao sei como montar dessa forma :huh:

 

tem como tu postar essa dica para mim

<input type="text"  id="que eu definir" title="um titulo de aviso"/>

 

ou seja o input com title :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não entendeu sobre o atributo Model::$uses?

Sobre o input, para gerá-lo desta forma, você deve fazer:

$this->Form->input('nome_da_coluna', array('id' => 'meuIdAqui', 'title' => 'Meu titulo aqui'));

Se a su versão for 1.26 less, utilize:

 

$form->input('nome_da_coluna', array('id' => 'meuIdAqui', 'title' => 'Meu titulo aqui'));

Compartilhar este post


Link para o post
Compartilhar em outros sites

sendo sincero nao :(

 

mais o que eu entendi nessa parte desse model se eu tive errado jogar tomate :)

 

 

 


class SubCategoriaController extends AppController {
  var $name = 'SubCategorias'; // É SubCategorias mesmo, não Sub_categorias. O mesmo para o Model (que é "Subcategoria");
  var $uses = array('SubCategoria','Categoria'); // Dizemos que queremos utilizar estes models
}

 

o que eu entendi que esse var users ele usar as duas tabelas separada

sendo que você escreve diferente , esse model nao e o mapeamento da tabelas que eu estou usando com foi criada no banco :?

obrigado pela dica dos input :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é users, é "uses" (do ingles "usa").

Você está dizendo quais models você quer carregar/usar neste controller.

Por exemplo. Você tem um controller Produtos, com seu model Produto.

Na página de produtos, você também quer exibir noticias, então vamos precisar utilizar o model "Noticia" também - além do model Produto.

Mas ele não existirá, a não ser que você diga para o cake que você quer usar ele:

class ProdutosController extends AppController {
   var $name = 'Produtos';
   var $uses = array('Produto','Noticia');
}
Agora nós podemos acessar o model assim Produto e Noticia:

$this->Noticia; // acessamos o Model Noticia
$this->Produto; // acessamos o Model Produto
Isso só é possivel porque falamos para o cake que queriamos usa-lo através do atributo Controller::$uses. Caso você não tivesse especifica os models que queria utilizar, exibiria um erro como o seu

// Notice (8): Undefined property: ProdutosController::$Produto[APP\controllers\produtos_controller.php

Espero que tenha entendido =)

Se tiver duvidas, só falar

OBS: Existem outras maneiras de carregar um model, como por exemplo, Controller::loadModel()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora deu para entende legal

e o porque do meu erro

 

 

por isso que você sugeriu :)

 

$this->SubCategoria->Categoria->find('all');

 

pq eu tinha no meu

meu modelo esta assim :

class Subcategoria extends AppModel {
  var $name = "sub_categoria"; //para tornar o script compinatível com php4
  var $belongsTo ='categoria';



}



?>

 

 

se nao tivesse um relancionamento

eu teria que usar metodo aqui Controller::$uses

 

aprendendo e vivendo

 

obrigado pela atenção e a dica do input title :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.