Currently, I am updating the system running on the existing Symfony 2.3 (currently 3.0.9), and I am verifying the operation.
HiddenType is used for the function that when you select a value in the search form, only the data that is the status is displayed.
I changed from 'hidden'
toHiddenType :: class
in the Symfony update, but the feature doesn’t work and all the data is displayed.
I am seeking advice.
Code
BrandSerachType.php
JavaScript
x
namespace AhiSpAdminBundleFormTypeBrand;
use SymfonyComponentFormAbstractType;
use SymfonyComponentFormFormBuilderInterface;
use SymfonyComponentOptionsResolverOptionsResolver;
use SymfonyComponentFormExtensionCoreTypeHiddenType;
use SymfonyComponentFormExtensionCoreTypeTextType;
use SymfonyComponentFormExtensionCoreTypeSubmitType;
/**
* Form Type
*/
class BrandSearchType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
// brandsex
$builder->add('brandSex', HiddenType::class, array(
'required' => false,
));
// flag
$builder->add("brandDispFlg", HiddenType::class, array(
"required" => false,
));
$builder->add("brandName", TextType::class, array(
"required" => false,
));
// searchbutton
$builder->add('search', SubmitType::class);
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
"method" => "GET",
"csrf_protection" => false,
"validation_groups" => false,
));
}
/**
* {@inheritdoc}
*/
public function getName()
{
return "q";
}
}
BrandController.php
JavaScript
use AhiSpAdminBundleControllerBaseController;
use AhiSpAdminBundleFormTypeBrandBrandType;
use AhiSpAdminBundleFormTypeBrandBrandSearchType;
use AhiSpCommonBundleUtilPagination;
/**
* Brand Controller
*
* @Route("/hq/brand")
*/
class BrandController extends BaseController
{
/**
* List Screen
*
* @Method("GET")
* @Route("/")
* @Secure(roles="ROLE_HQ_MANAGE")
* @Template("AhiSpAdminBundle:Hq/Brand:index.html.twig")
*/
public function indexAction(Request $request)
{
// Create a search form
$searchForm = $this->createForm(BrandSearchType::class, null, array(
"action" => $this->generateUrl("ahi_sp_admin_hq_brand_index"),
));
// Get search criteria
$params = $this->getSearchParameter($searchForm, $request);
// Sortable if only the target gender is specified in the search conditions
$sortable = false;
if ($request->query->get('sortable') && isset($params["brandSex"])) {
$paramCount = count(array_filter($params, function ($var) {
return ($var !== null);
}));
if ($paramCount == 1) {
$sortable = true;
}
}
return array(
"searchForm" => $searchForm->createView(),
"brands" => $brands,
"pagination" => $pagination,
"sortable" => $sortable,
);
}
Services.yml
JavaScript
# Target gender
target_sex_mens: 0
target_sex_ladies: 1
target_sex_others: 2
target_sex:
% target_sex_mens%: "Men's"
% target_sex_ladies%: "Ladies"
% target_sex_others%: "Men's & Women's"
index.html.twig
JavaScript
{# Target gender #}
<tr>
<td>{{ form_label(searchForm.brandSex, 'Target gender') }}</td>
<td>
{% if searchForm.brandSex.vars.data is null %}
<strong>All</strong>
{% else %}
<a href="{{ path(app.request.get('_route'), params|merge({"q": q|merge({"brandSex": null})})) }}">All</a>
{% endif %}
|
{% if searchForm.brandSex.vars.data is not null and searchForm.brandSex.vars.data == target_sex_mens %}
<strong>Men's</strong>
{% else %}
<a href="{{ path(app.request.get('_route'), params|merge({"q": q|merge({"brandSex": target_sex_mens})})) }}">Men's</a>
{% endif %}
|
{% if searchForm.brandSex.vars.data is not null and searchForm.brandSex.vars.data == target_sex_ladies %}
<strong>Women's</strong>
{% else %}
<a href="{{ path(app.request.get('_route'), params|merge({"q": q|merge({"brandSex": target_sex_ladies})})) }}">Women's</a>
{% endif %}
|
{% if searchForm.brandSex.vars.data is not null and searchForm.brandSex.vars.data == target_sex_others %}
<strong>Men's & Women's</strong>
{% else %}
<a href="{{ path(app.request.get('_route'), params|merge({"q": q|merge({"brandSex": target_sex_others})})) }}">Men's & Women's</a>
{% endif %}
{{ form_widget(searchForm.brandSex) }}
</td>
</tr>
Version Cent OS 6.7 PHP 5.6 Symfony3.0.9
Advertisement
Answer
Usually I set hidden type like this, try, maybe it helps you:
JavaScript
$builder
->add('attributeName', TextType::class, [
'label' => false,
'attr' => ['hidden' => 'hidden', 'value' => 'myHiddenValue']