Javascript CakePHP—从用户处处理数组的最佳方法

Javascript CakePHP—从用户处处理数组的最佳方法,javascript,php,mysql,cakephp,Javascript,Php,Mysql,Cakephp,对于我正在使用CakePHP构建的应用程序,我希望用户能够输入任意数量的标记,这些标记来自一组特定的可能性,有点像stackoverflow的类别标记 我实际上得到了一个工作代码,但对我来说它看起来很难看。我将在下面概述我的方法,以及我想用黑体字进行的改进。我很抱歉没有提出具体的问题,但作为一个自作主张的人,我真的可以利用反馈。如有任何建议,将不胜感激 我允许用户使用Html->select从列表中选择他们的选项: $options = array( //... ); echo

对于我正在使用CakePHP构建的应用程序,我希望用户能够输入任意数量的标记,这些标记来自一组特定的可能性,有点像stackoverflow的类别标记

我实际上得到了一个工作代码,但对我来说它看起来很难看。我将在下面概述我的方法,以及我想用黑体字进行的改进。我很抱歉没有提出具体的问题,但作为一个自作主张的人,我真的可以利用反馈。如有任何建议,将不胜感激

我允许用户使用Html->select从列表中选择他们的选项:

$options = array(
    //...
   );

echo $this->Form->select(
    'Tag.tag_name',
    $options,
    array('multiple' => true)
);
我宁愿让用户键入他们的选择,然后再显示选项。理想情况下,标签会出现在那之后,用一个可点击的十字架再次移除它,就像在Evernote Webtagger中一样。有人知道可以用于此任务的Java脚本吗

然后是服务器端。基于我在stackoverflow上读到的其他帖子,我决定创建一个单独的表来存储我希望它们易于搜索的标签。数据存储在另一个控制器中,对象与标记表有hasMany关联。第一次存储东西的代码看起来不错,但是用户应该能够在以后编辑它。我现在要做的就是简单地销毁标记表中与当前帖子相关联的所有db对象,然后再次添加从表单返回的所有标记。以下是我的代码的相关部分:

            $profile = $this -> select(); // select() is a private function that returns the current profile, based on Auth id

            //destroy old ones
            foreach($profile['Tag'] as $tag):
                $this -> Profile -> Tag -> delete($tag['id']);
            endforeach;

            //create new ones
            foreach ($this -> request -> data['Tag']['tag_name'] as $tag):
                $this -> Profile -> Tag -> create();
                $entry['tag_name'] = $tag;
                $entry['profile_id'] = $this -> Profile -> id;
                $this -> Profile -> Tag -> save($entry);
            endforeach;
我对这些东西的经验是有限的,但删除所有东西然后再次保存似乎很粗糙。是否有一种好方法可以只触摸已删除的条目

最后,为了确保用户在进入编辑菜单时看到他以前的标记,我将数据存储到$this->request->data中:

        $count = 0;
            foreach($profile['Tag'] as $tag):
                $this -> request -> data['Tag']['tag_name'][$count] = $tag['tag_name'];
                $count++;
            endforeach;

感谢您的评论:

这可能更适合于感谢两位的链接!Select2似乎正是我在寻找前端部分的东西:下次我将使用codereview来解决这些模糊的问题;ndm,你能推荐一个更深入地讨论CakePHP或Web开发的地方吗?例如,关于工具的讨论?在学习C++中,CPLUS PLUS网站对我来说是非常有价值的,但是我还没有找到这样一个社区来进行Web开发。