嘿我想在我的路线(注释)中获取所选的选项值。我有包含索引视图的Portfolio Controller。在索引视图中,有一个只有一个选择下拉列表的表单。最初URL看起来像
http://localhost/idp/web/app_dev.php/portfolio/
索引视图中的表单是
<form name="portfolios" action="{{ path('v2_pm_portfolio_switch') }}" method="post" >
<select name="portfolio" style="width: 200px; height:25px;">
<option selected="selected" value="default">Switch Your Portfolio</option>
{% for portfolio in portfolios %}
<option value={{ portfolio.id }}>{{ portfolio.portfolioName }}</option>
{% endfor %}
</select>
<input type="submit"class="portfolio_input button2 tooltip" value="Switch">
</form>
当用户提交表单时,它会调用switchportfolio
Action(内部组合控制器)
我的交换机组合行动是
/**
* Switch Portfolio action.
* @Route("/{user selected option name should come here}", name="v2_pm_portfolio_switch")
* @Secure(roles="ROLE_Normal_Registered_User")
* @Template("MunichInnovationGroupPatentBundle:Portfolio:index.html.twig")
*/
public function switchportfolioAction(Request $request){
}
如何在Symfony2中将所选选项名称发送到我的网址? 因此,如果用户选择portofolio1,并提交表单,则URL变为:
http://localhost/idp/web/app_dev.php/portfolio/portfolio1
答案 0 :(得分:0)
HTML表单不是那样的。您需要添加一些在提交表单时运行的javascript,它会停止提交并根据所选选项更改当前位置。
答案 1 :(得分:0)
做这样的事情:
/**
* Switch Portfolio action.
* @Route("/v2_pm_portfolio_switch", name="v2_pm_portfolio_switch")
* ...
*/
public function switchPortfolioAction(Request $request){
//check that the form parameters are OK and get the portfolio id from the request
return $this->redirect($this->generateUrl('show_portfolio',array('portfolio'=>$portfolioId)));
}
/**
* Show Portfolio action.
* @Route("/portfolio/{portfolio)", name="show_portfolio")
* ...
*/
public function showPortfolioAction($portfolio){
//do whatever you need to show this portfolio
}
答案 2 :(得分:0)
我认为这不是正确的方法。
我的意思是,如果您只想要一个带有修改URL的选择的表单,则不应使用POST作为表单提交方法。那对于GET方法来说更合适。
我认为这不是Symfony2的问题。
你可以像@ carlos-granados那样引用,但不是创建转发,而是抓住提交事件,并使用javascript使用window.location
方式重定向described here
您可以放弃<form>
action=""
属性,只填写每个
<option value="{{ path('show_portfolio', { 'slug': portfolio.name }}">{{ portoflio.name }}</option>
将生成正确完全生成路径的节点。然后,确保您的show_portfolio
已准备好{slug}
以正确的方式从数据库中获取条目
$entry = $em->getRepository('Bundle:Portoflio')->findBy(array('slug'=>$request->get('slug')));
但这是我原来回答的地方。您应该查找@ParamConverter
和see for something similar to here
$('form').submit(function(event){
event.preventDefault();
window.location.href = $('form select').value();
});