Laravel Atributos do OPTION / Form SELECT - (AJUDA)
19/01/2017
0
Bom dia pessoal,
Estou com um problema em listar os nomes direto do DB no meu menu de opções.
Não consigo trazer simplesmente o nome de uma categoria que desejo selecionar, ele traz todo objeto.
Detalhes do código:
Meu formulário SELECT:
<div class="form-group">
{{ Form::label('Category', 'Categoria:') }}
{{ Form::select('category_id', $categories , null, ['class'=>'form-control']) }}
</div>
Meu controller:
public function edit($id)
{
$product = $this->repository->find($id);
$categories = $this->categoryRepository->all(['name']);
return view('admin.products.edit', compact('product','categories'));
}
Dessa forma de cima a opção que estar vindo no meu menu de opções estar dessa forma {"name":"alterada categoria"}, conforme código abaixo:
<label for="Category">Categoria:</label>
<select class="form-control" name="category_id"><option value="0">{"name":"alterada categoria"}</option><option value="1" selected="selected">{"name":"namnam"}</option><option value="2">{"name":"doloribus"}</option><option value="3">{"name":"ipsum"}</option><option value="4">{"name":"culpa"}</option><option value="5">{"name":"quis"}</option><option value="6">{"name":"dolore"}</option><option value="7">{"name":"veritatis"}</option><option value="8">{"name":"dignissimos"}</option><option value="9">{"name":"eveniet"}</option><option value="10">{"name":"Nome da categoria"}</option><option value="11">{"name":"Categoria"}</option><option value="12">{"name":"categoriziado"}</option><option value="13">{"name":""}</option><option value="14">{"name":"animie"}</option><option value="15">{"name":"blabla"}</option><option value="16">{"name":"uashuahusa"}</option><option value="17">{"name":"Produto novo"}</option></select>
Queria trazer somente o nome da categoria, dessa forma "alterada categoria".
Resolvi usar o lists do laravel, para especificar o quero trazer.
então fiz dessa forma.
Implementei o meu lists na minha classe que implementa a interface.
Minha interface:
interface RepositoryInterface
{
/**
* Retrieve data array for populate field select
*
* @param string $column
* @param string|null $key
*
* @return \\Illuminate\\Support\\Collection|array
*/
public function lists($column, $key = null);
/**
Minha implementação do meu metodo lists():
public function lists()
{
return $this->model->lists('name','id');
}
Minha chamada no controller:
public function edit($id)
{
$product = $this->repository->find($id);
$categories = $this->categoryRepository->lists();
return view('admin.products.edit', compact('product','categories'));
}
O meu resultado que eu teria no meu menu option seria somente o nome da minha categoria, mas estar apresentando esse erro:
FatalErrorException in CategoryRepositoryEloquent.php line 16:
Declaration of SuperCompras\\Repositories\\CategoryRepositoryEloquent::lists() must be compatible with Prettus\\Repository\\Contracts\\RepositoryInterface::lists($column, $key = NULL)
Já tentei solucionar isso mas não consigo.
Alguém poderia me ajudar, por favor? Ficarei grato!
Abraço!
Estou com um problema em listar os nomes direto do DB no meu menu de opções.
Não consigo trazer simplesmente o nome de uma categoria que desejo selecionar, ele traz todo objeto.
Detalhes do código:
Meu formulário SELECT:
<div class="form-group">
{{ Form::label('Category', 'Categoria:') }}
{{ Form::select('category_id', $categories , null, ['class'=>'form-control']) }}
</div>
Meu controller:
public function edit($id)
{
$product = $this->repository->find($id);
$categories = $this->categoryRepository->all(['name']);
return view('admin.products.edit', compact('product','categories'));
}
Dessa forma de cima a opção que estar vindo no meu menu de opções estar dessa forma {"name":"alterada categoria"}, conforme código abaixo:
<label for="Category">Categoria:</label>
<select class="form-control" name="category_id"><option value="0">{"name":"alterada categoria"}</option><option value="1" selected="selected">{"name":"namnam"}</option><option value="2">{"name":"doloribus"}</option><option value="3">{"name":"ipsum"}</option><option value="4">{"name":"culpa"}</option><option value="5">{"name":"quis"}</option><option value="6">{"name":"dolore"}</option><option value="7">{"name":"veritatis"}</option><option value="8">{"name":"dignissimos"}</option><option value="9">{"name":"eveniet"}</option><option value="10">{"name":"Nome da categoria"}</option><option value="11">{"name":"Categoria"}</option><option value="12">{"name":"categoriziado"}</option><option value="13">{"name":""}</option><option value="14">{"name":"animie"}</option><option value="15">{"name":"blabla"}</option><option value="16">{"name":"uashuahusa"}</option><option value="17">{"name":"Produto novo"}</option></select>
Queria trazer somente o nome da categoria, dessa forma "alterada categoria".
Resolvi usar o lists do laravel, para especificar o quero trazer.
então fiz dessa forma.
Implementei o meu lists na minha classe que implementa a interface.
Minha interface:
interface RepositoryInterface
{
/**
* Retrieve data array for populate field select
*
* @param string $column
* @param string|null $key
*
* @return \\Illuminate\\Support\\Collection|array
*/
public function lists($column, $key = null);
/**
Minha implementação do meu metodo lists():
public function lists()
{
return $this->model->lists('name','id');
}
Minha chamada no controller:
public function edit($id)
{
$product = $this->repository->find($id);
$categories = $this->categoryRepository->lists();
return view('admin.products.edit', compact('product','categories'));
}
O meu resultado que eu teria no meu menu option seria somente o nome da minha categoria, mas estar apresentando esse erro:
FatalErrorException in CategoryRepositoryEloquent.php line 16:
Declaration of SuperCompras\\Repositories\\CategoryRepositoryEloquent::lists() must be compatible with Prettus\\Repository\\Contracts\\RepositoryInterface::lists($column, $key = NULL)
Já tentei solucionar isso mas não consigo.
Alguém poderia me ajudar, por favor? Ficarei grato!
Abraço!
Eric Galdino
Curtir tópico
+ 0
Responder
Posts
10/05/2019
Michel Leal
Bom dia pessoal,
Estou com um problema em listar os nomes direto do DB no meu menu de opções.
Não consigo trazer simplesmente o nome de uma categoria que desejo selecionar, ele traz todo objeto.
Detalhes do código:
Meu formulário SELECT:
<div class="form-group">
{{ Form::label('Category', 'Categoria:') }}
{{ Form::select('category_id', $categories , null, ['class'=>'form-control']) }}
</div>
Meu controller:
public function edit($id)
{
$product = $this->repository->find($id);
$categories = $this->categoryRepository->all(['name']);
return view('admin.products.edit', compact('product','categories'));
}
Dessa forma de cima a opção que estar vindo no meu menu de opções estar dessa forma {"name":"alterada categoria"}, conforme código abaixo:
<label for="Category">Categoria:</label>
<select class="form-control" name="category_id"><option value="0">{"name":"alterada categoria"}</option><option value="1" selected="selected">{"name":"namnam"}</option><option value="2">{"name":"doloribus"}</option><option value="3">{"name":"ipsum"}</option><option value="4">{"name":"culpa"}</option><option value="5">{"name":"quis"}</option><option value="6">{"name":"dolore"}</option><option value="7">{"name":"veritatis"}</option><option value="8">{"name":"dignissimos"}</option><option value="9">{"name":"eveniet"}</option><option value="10">{"name":"Nome da categoria"}</option><option value="11">{"name":"Categoria"}</option><option value="12">{"name":"categoriziado"}</option><option value="13">{"name":""}</option><option value="14">{"name":"animie"}</option><option value="15">{"name":"blabla"}</option><option value="16">{"name":"uashuahusa"}</option><option value="17">{"name":"Produto novo"}</option></select>
Queria trazer somente o nome da categoria, dessa forma "alterada categoria".
Resolvi usar o lists do laravel, para especificar o quero trazer.
então fiz dessa forma.
Implementei o meu lists na minha classe que implementa a interface.
Minha interface:
interface RepositoryInterface
{
/**
* Retrieve data array for populate field select
*
* @param string $column
* @param string|null $key
*
* @return \\\\Illuminate\\\\Support\\\\Collection|array
*/
public function lists($column, $key = null);
/**
Minha implementação do meu metodo lists():
public function lists()
{
return $this->model->lists('name','id');
}
Minha chamada no controller:
public function edit($id)
{
$product = $this->repository->find($id);
$categories = $this->categoryRepository->lists();
return view('admin.products.edit', compact('product','categories'));
}
O meu resultado que eu teria no meu menu option seria somente o nome da minha categoria, mas estar apresentando esse erro:
FatalErrorException in CategoryRepositoryEloquent.php line 16:
Declaration of SuperCompras\\\\Repositories\\\\CategoryRepositoryEloquent::lists() must be compatible with Prettus\\\\Repository\\\\Contracts\\\\RepositoryInterface::lists($column, $key = NULL)
Já tentei solucionar isso mas não consigo.
Alguém poderia me ajudar, por favor? Ficarei grato!
Abraço!
Estou com um problema em listar os nomes direto do DB no meu menu de opções.
Não consigo trazer simplesmente o nome de uma categoria que desejo selecionar, ele traz todo objeto.
Detalhes do código:
Meu formulário SELECT:
<div class="form-group">
{{ Form::label('Category', 'Categoria:') }}
{{ Form::select('category_id', $categories , null, ['class'=>'form-control']) }}
</div>
Meu controller:
public function edit($id)
{
$product = $this->repository->find($id);
$categories = $this->categoryRepository->all(['name']);
return view('admin.products.edit', compact('product','categories'));
}
Dessa forma de cima a opção que estar vindo no meu menu de opções estar dessa forma {"name":"alterada categoria"}, conforme código abaixo:
<label for="Category">Categoria:</label>
<select class="form-control" name="category_id"><option value="0">{"name":"alterada categoria"}</option><option value="1" selected="selected">{"name":"namnam"}</option><option value="2">{"name":"doloribus"}</option><option value="3">{"name":"ipsum"}</option><option value="4">{"name":"culpa"}</option><option value="5">{"name":"quis"}</option><option value="6">{"name":"dolore"}</option><option value="7">{"name":"veritatis"}</option><option value="8">{"name":"dignissimos"}</option><option value="9">{"name":"eveniet"}</option><option value="10">{"name":"Nome da categoria"}</option><option value="11">{"name":"Categoria"}</option><option value="12">{"name":"categoriziado"}</option><option value="13">{"name":""}</option><option value="14">{"name":"animie"}</option><option value="15">{"name":"blabla"}</option><option value="16">{"name":"uashuahusa"}</option><option value="17">{"name":"Produto novo"}</option></select>
Queria trazer somente o nome da categoria, dessa forma "alterada categoria".
Resolvi usar o lists do laravel, para especificar o quero trazer.
então fiz dessa forma.
Implementei o meu lists na minha classe que implementa a interface.
Minha interface:
interface RepositoryInterface
{
/**
* Retrieve data array for populate field select
*
* @param string $column
* @param string|null $key
*
* @return \\\\Illuminate\\\\Support\\\\Collection|array
*/
public function lists($column, $key = null);
/**
Minha implementação do meu metodo lists():
public function lists()
{
return $this->model->lists('name','id');
}
Minha chamada no controller:
public function edit($id)
{
$product = $this->repository->find($id);
$categories = $this->categoryRepository->lists();
return view('admin.products.edit', compact('product','categories'));
}
O meu resultado que eu teria no meu menu option seria somente o nome da minha categoria, mas estar apresentando esse erro:
FatalErrorException in CategoryRepositoryEloquent.php line 16:
Declaration of SuperCompras\\\\Repositories\\\\CategoryRepositoryEloquent::lists() must be compatible with Prettus\\\\Repository\\\\Contracts\\\\RepositoryInterface::lists($column, $key = NULL)
Já tentei solucionar isso mas não consigo.
Alguém poderia me ajudar, por favor? Ficarei grato!
Abraço!
Opa.....
Tente get() no lugar de find()
$product = $this->repository->where('id',$id)->get();
Quando vc usa find(), na view vc faz uma associação direta sem necessidade de loop, com o get() você recebe um object como retorno podendo usar loop, no caso foreach();
Espero poder ajudar.
Responder
Clique aqui para fazer login e interagir na Comunidade :)