Symfony2将整个实体对象传递给path()

时间:2016-06-20 11:24:33

标签: symfony

为什么我需要这个?

例如,当我想要将路由从/news/{id}更改为path('news', {'slug': 'my-post'}时,我需要替换所有调用path('news', {'post': post})的地方。我希望传递像public static class MVCExtentions { public static string GetInputName<TModel, TProperty>(Expression<Func<TModel, TProperty>> expression) { if (expression.Body.NodeType == ExpressionType.Call) { MethodCallExpression methodCallExpression = (MethodCallExpression)expression.Body; string name = GetInputName(methodCallExpression); return name.Substring(expression.Parameters[0].Name.Length + 1); } return expression.Body.ToString().Substring(expression.Parameters[0].Name.Length + 1); } private static string GetInputName(MethodCallExpression expression) { MethodCallExpression methodCallExpression = expression.Object as MethodCallExpression; if (methodCallExpression != null) { return GetInputName(methodCallExpression); } return expression.Object.ToString(); } public static MvcHtmlString EnumDropDownListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression) where TModel : class { string inputName = GetInputName(expression); var value = htmlHelper.ViewData.Model == null ? default(TProperty): expression.Compile()(htmlHelper.ViewData.Model); return htmlHelper.DropDownList(inputName, ToSelectList(typeof(TProperty), value.ToString())); } } 这样的实体,然后改变我喜欢的路线。这将使我能够灵活地轻松更改路线。感谢。

1 个答案:

答案 0 :(得分:0)

你无法将生命传递为param。 path函数只接受字符串和数字参数,因为此函数根据路由生成url。

您如何将对象传递给浏览器网址栏?

/news/"{object": std_what_the_@?}

当然你可以制作your own twig function并传递对象来制作你的网址。

这样你可以检查你的对象有slug属性并选择你的路线和参数。无论如何你必须自己做。

我希望它有所帮助,但你的问题不明确......