gpt4 book ai didi

php - 保存到数据库的 jQuery Portlet

转载 作者:可可西里 更新时间:2023-10-31 23:48:45 26 4
gpt4 key购买 nike

我在这个网站和网上广泛地查看了这个问题的答案。我曾尝试将许多示例应用于我的问题,但无济于事。

我有两个 block ,名为“Links”和“User Links”。在每个 block 中,它们是我网站上链接的描述(它们本身就是 block ),可以从左向右单独拖动。

我的问题是,一旦我按下“Save Changes”,我就无法将数据保存到我的数据库中,我的错误是“Undefined index: quicklink

这是代码。

<?php echo Form::open(URL::Base().Route::get('links')->uri(array('action' => 'update')), array('id' => 'links-form', 'class' => 'form', 'enctype' => 'multipart/form-data')) ?>
<section class="grid_12">
<div class="block-border">
<div class="block-content">
<div class="block-controls">
<div class="controls-buttons"></div>
</div>
<h1>Quick Links</h1>
<div class="columns">
<div class="colx2-left">
<fieldset>
<legend>Links</legend>
<p class="inline-small-label small-margin">
<div class="column">
<?php if (count($links)): ?>
<?php foreach ($links as $row): ?>
<div class="portlet">
<div class="portlet-content"><?php echo $row->description ?></div>
</div>
<?php endforeach ?>
<?php endif ?>
</div>
</p>
</fieldset>
</div>
<div class="colx2-right">
<fieldset>
<legend>User Links</legend>
<p class="inline-small-label small-margin">
<div class="column">
<?php if (count($userlinks)): ?>
<?php foreach ($userlinks as $row): ?>
<div class="portlet" name="link[]" id="link" multiple="multiple" size="12">
<div class="portlet-content"><?php echo $row->link_id ?></div>
</div>
<?php endforeach ?>
<?php endif ?>
</div>
</p>
</fieldset>
</div>
</div>
<div class="columns">
<div class="colx2-left align-center">
<?php echo Form::button('save_edit', 'Save Changes', array('id' => 'save_edit', 'type' => 'submit', 'value' => 'save_edit')) ?>
</div>
<div class="colx2-right align-center">
<?php echo Form::button('cancel_edit', 'Cancel Changes', array('id' => 'cancel_edit', 'type' => 'button', 'value' => 'cancel_edit')) ?>
</div>
</div>
</div>
</div>
</section>
<div class="clear"></div>
<?php echo Form::close() ?>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css" />
<style>
body { min-width: 520px; }
.column { width: 520px; float: left; padding-bottom: 100px; }
.portlet { margin: 0 1em 1em 0; }
.portlet:hover { cursor: pointer }
.portlet-header { margin: 0.3em; padding-bottom: 4px; padding-left: 0.2em; }
.portlet-header .ui-icon { float: right; }
.portlet-content { padding: 0.4em; }
.ui-sortable-placeholder { border: 1px dotted black; visibility: visible !important; height: 50px !important; }
.ui-sortable-placeholder * { visibility: hidden; }
</style>
<script>
$(function() {
$( ".column" ).sortable({
connectWith: ".column"
});

$( ".portlet" ).addClass( "ui-widget ui-widget-content ui-helper-clearfix ui-corner-all" )
.find( ".portlet-header" )
.addClass( "ui-widget-header ui-corner-all" )
.prepend( "<span class='ui-icon ui-icon-minusthick'></span>")
.end()
.find( ".portlet-content" );

$( ".portlet-header .ui-icon" ).click(function() {
$( this ).toggleClass( "ui-icon-minusthick" ).toggleClass( "ui-icon-plusthick" );
$( this ).parents( ".portlet:first" ).find( ".portlet-content" ).toggle();
});

$( ".column" ).disableSelection();
});

</script>

Controller

    /**
* Update the Users settings and details
*
* @return void
*/
public function action_update()
{
$this->template = NULL;
$this->auto_render = FALSE;

if ($_POST)
{
$row = ORM::factory('LinkUser');

// Remove all current Links
foreach($row->link->find_all() as $ql)

$row->remove('link', $ql);

foreach($_POST['link'] as $ql)
{
$row->add('link', $ql);
}
}
}

模型“链接”

<?php defined('SYSPATH') or die('No direct access allowed.');

class Model_Link extends ORM {

protected $_table_name = 'links';

protected $_has_many = array(
'qlinkusers' => array(
'model' => 'LinkUser',
'foreign_key' => 'link_id',
'through' => 'links_users',
),
);
}

模型“链接用户”

<?php defined('SYSPATH') or die('No direct access allowed.');

class Model_LinkUser extends ORM {

protected $_table_name = 'links_users';

protected $_belongs_to = array(
'link' => array(
'model' => 'Link',
'foreign_key' => 'link_id',
'through' => 'links_users',
),
'user' => array(
'model' => 'user',
'foreign_key' => 'user_id',
),
);
}

我在 jQuery 方面非常薄弱,希望它清楚我需要什么......我想将一些链接从左边的 block 拖到右边的 block ,到目前为止是成功的,一旦我按下“Save Changes”,我就无法将数据保存到我的数据库中,我的错误是“未定义索引:链接

非常感谢。

最佳答案

如果我在你那里,我会使用类似下面的东西(与你当前的脚本完全不同):

当您的链接或您要记录的任何内容的排序发生变化时。您可以通过直接 ajax 请求更好地尝试。您需要做的是确定操作。

在你的情况下是:“action_update”

您将首先从您的 html 中收集新链接/排序(或您试图保存到数据库中的任何内容),从而通过 ajax 发布数据。然后通过您在路由中设置的 URL 发布它。您将它链接到您当前的 Controller 操作,您就完成了:

Router::connect('/request/via/ajax/here', array('controller' => 'YourController', 'action' => 'action_update'));

您不需要您现在使用的预定义 Form::button。只需记录一个点击事件并执行您的 ajax 函数。

记得使用 $this->autoRender=false;在你的行动中。

您的 ajax 请求示例:

$('.update_button').on('click',function()
{
$data = $('#links-form').serializeArray();
$.ajax({
url: '<?php echo Router::url(array('controller'=>'YourController', 'action'=>'action_update'), true ); ?>',
type: 'post',
data: {data:$data},
success: function(result,status)
{
alert('data saved');
}
});
});

要先检查您的日期,您可以将其记录在您的控制台中:

console.log($data)

关于php - 保存到数据库的 jQuery Portlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16916658/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com