首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Symfony2中使用类似片段的视图

在Symfony2中使用类似片段的视图
EN

Stack Overflow用户
提问于 2012-12-04 02:23:58
回答 1查看 701关注 0票数 0

我在一个数据库中有两个表。其中一个包含应用程序的用户,另一个以ManyToOne关系保存有关他们的一些医疗报告,因此每个用户都可以在info表中拥有随机数量的医疗报告。

在屏幕的左边,我想要显示用户名的列表,这是一件很容易做的事情。每次我点击其中一个人的名字,我就会转到另一个显示医疗数据的页面,我必须返回以再次获得用户列表。然而,我想让这些信息出现在同一视图中,所以每次我点击左边的名字时,我都会在右边看到他或她的数据,而当我点击另一个用户时,前一个用户的信息就会消失,新的信息就会显示出来。我的意思是,我想要一个与旧的HTML iframe或新的Android4片段类似的行为。

这在Symfony2/Twig中是可能的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-04 04:33:24

Twig只是一个模板引擎,它在服务器端被解析,原始的HTML/CSS/JS被返回给浏览器,你不能用Twig编写与用户的交互。

Symfony是一个服务器端框架,这意味着它在服务器端被解析,原始的HTML/CSS/JS被返回给浏览器,你不能用Symfony编写与用户的交互。

您需要使用客户端脚本语言,如JavaScript。您可以创建AJAX请求来解决您的问题。AJAX请求一个url并在页面上显示该url的内容。由于AJAX是JavaScript中最不能跨浏览器的东西之一,因此建议使用MooTools或jQuery这样的库。

我建议为RESTful请求创建一个AJAX API。像/users/{id}这样的代码应该会显示用户信息。为此,创建一个显示用户数据的控制器,并将其映射到/users/{id}路由:

代码语言:javascript
运行
复制
<?php
// src/Acme/DemoBundle/Controller/UserController.php
namespace Acme\DemoBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

class UserController extends Controller
{
    // ...

    /**
     * @Route("/users/{id}")
     */
    public function showAction($id)
    {
        // select user by id
        $user = ...;

        // renders the user data
        $this->render('AcmeDemoBundle:User:show.html.twig', array('user' => $user));
    }
}

现在,您创建了对该url的AJAX请求,以获取用户数据:

代码语言:javascript
运行
复制
<ul> 
    <li><a class="js-show-user" data-id="1">Joren</a></li>
    <li><a class="js-show-user" data-id="2">Wouter</a></li>
    <!-- ... -->
</ul>
<div id="js-user-data"></div>

<!-- ... include jquery -->
<script>
jQuery(function($) {

    var output = $('#js-user-data');

    $('.js-show-user').click(function(e) {
        jQuery.ajax({
            url: '/users/' + $(this).data('id'), // request the correct url
            success: function (result) {
                output.html(result); // output the result
            },
        });
    });

});
</script>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13689359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档