如何从 block_view 调用模块中的函数

how to call function in module from block_view

我正在编写一个 Drupal 7 模块来查询我的数据库并打印出 view_block,其中包含属于当前登录用户的项目列表:

ID ClientName ProjectName ProjectDescription
 1     mickey       toon1        bla bla bla
 2      mouse       toon2        bla bla bla

在这一点上,我需要用户select他的项目之一来进行可视化。

编辑:

我需要做的是在我的模块中调用另一个函数并将当前用户编辑的项目 ID 传递给它select。

我知道如何向 table 中的每一行添加一个 link 并将 ID 值带到下一页,使用 GET['id'] 检索它,但出于安全原因,我真的不想更改 url - 即,我不希望用户更改 url 中的 ID 并查看其他人的项目,也不想阻止它发生.我更喜欢尽可能保持 url 干净。

在 Drupal 7 中允许用户 select 一个项目然后调用我的模块中的另一个函数以根据 selected ID 加载数据的正确逻辑是什么?

我会实施 hook_menu。使用此解决方案,您需要在 url 中传递项目的 ID,但是挂钩菜单允许您定义 2 个函数。访问函数将检查用户是否有权访问项目,回调函数将检索项目并显示项目详细信息。

这是我将如何实现它的一个简单示例:

/**
 * Implements hook_menu().
 */
function my_module_menu() {
    $items['my_module/show_project_detail/%'] = array(
        'title' => 'Show Task Detail',
        'access callback' => 'show_project_access',
        'access arguments' => array(1),
        'title callback' => false,
        'page callback' => 'show_project',
        'page arguments' => array(1),
    );
    return $items;
}

function show_project_access( $sProjectId ){
    // checks if the user has access to $sProjectId.
    // returns true if he has access, otherwise returns false
}

function show_project( $sProjectId ){
    //returns the html of the task's detail view
}

然后调用 hook_menu 你会调用这个 url https://my_drupal/my_module/show_project_detail/123 其中 123 是项目 ID。