Например есть кнопка которая будет отправлять в базу +1 (increment) и user_id то кто нажал как можно это сделать. Спасибо!
ajax
Да знаю с ajax, но не хочу брать сторонние функции а как то например кнопка лайка сделать.
писать свой action для обработки запроса придется вам — несколько строк кода.Друзья есть ли в самом движке какой то обработчик jquery или скрипт который сможет обработать данные сразу занести в базу.
писать свой action для обработки запроса придется вам — несколько строк кода.Друзья есть ли в самом движке какой то обработчик jquery или скрипт который сможет обработать данные сразу занести в базу.
Понятно, а есть ли какой нибудь пример что бы упираться ему и переписать как то?
Ну а как работать с ajax на jquery лучше почитать в интернете…
Схема —
1. добавить аякс запрос при клике на что-то, который будет вызывать экшн компонента
2. в экшене добавить вызов метода модели
3. в модели прописать нужные изменение в БД
Нико, изменение кармы, например. Экшн можно подсмотреть в консоли, поменяв карму.
Ну а как работать с ajax на jquery лучше почитать в интернете…
Схема —
1. добавить аякс запрос при клике на что-то, который будет вызывать экшн компонента
2. в экшене добавить вызов метода модели
3. в модели прописать нужные изменение в БД
Спасибо будет мне точно тяжело, ставлю себе задачу теперь делать )
@SmartControl,
<script src="jquery.min.js" type="text/javascript"></script> <div class="buttons15"> <button name = "button16" class="button16"><?php echo LANG_SPORT_FOLLOW; ?></a> </div> </div> <script language="javascript" type="text/javascript"> $('.button16').click( function() { $.ajax({ type: 'POST', url: 'response.php?action=sample2', data: 'name=Andrew&nickname=Aramis', success: function(data){ $('.results').html(data); } }); }); </script> <div class="results">Ждем ответа</div>
<?php switch ($_REQUEST['action']) { case 'button16': echo 'Пример 2 - передача завершилась успешно. Параметры: name = ' . $_POST['name'] . ', nickname= ' . $_POST['nickname']; break; } ?>
Добавил пока экшен class actionSportsTeamFollow extends cmsAction { public function run($id = false){ if (!cmsUser::isLogged()) { cmsCore::error404(); } if (!$this->request->isAjax()){ cmsCore::error404(); } $user = cmsUser::getInstance(); 'user_id' => $user->id, 'profile_id' => $profile_id ); $sport_follow_team_add = $this->model->addSportsFollowTeam($follow); 'error' => $sport_follow_team_add ? false : true )); } } model.php /* Follow Team */ public function getSportsFollowTeam($id){ $sport_follow_team['sport_follows_team'] = $this->get('sport_follow'); return $sport_follow_team; } public function addSportFollowTeam($follow){ return $this->insert('sport_follow', $follow); } public function updateSportFollowTeam($id){ return $this->update('sport_follow', $id); }
<script language="javascript" type="text/javascript"> var icms = icms || {}; icms.users = (function ($) { this.karmaUp = function(){ this.karmaVote('up'); return false; }; this.karmaVote = function(direction){ var block = $('#user_profile_rates'); var url = block.data('url'); var is_comment = block.data('is-comment'); var comment = ''; var value = $('.karma .value', block).html(); $('.karma .value', block).addClass('loading-icon').html(''); $('.karma .thumb', block).hide(); $.post(url, {direction: direction, comment: comment}, function(result){ if (result == null || typeof(result) == 'undefined' || result.error){ icms.users.error(result.message); $('.karma .thumb', block).show(); $('.karma .value', block).removeClass('loading-icon').html(value); return; } $('.karma .value', block). removeClass('loading-icon'). removeClass('zero'). removeClass('positive'). removeClass('negative'). addClass(result.css_class). html(result.value); $('.karma .thumb', block).remove(); }, 'json'); }; this.error = function(message){ if (message) { icms.modal.alert(message); } this.enableStatusInput(false); }; }; return this; }).call(icms.users || {},jQuery); </script>
<div class="buttons15"> <div id="user_profile_rates" data-url="<?php echo $this->href_to('team_follow', 1); ?>"> <div class="karma block"> <a href="#vote-up" onclick="return icms.users.karmaUp()" class="thumb thumb_up button16"><?php echo LANG_SPORT_FOLLOW; ?></a> </div> </div> </div>
Плохой движок, не используйте его. Делайте на "простом пхп" если знаете как!В простом пхп знаю как делать и у меня работает но вот на этом движке ни как не пойму как подключить =(
Неправильно, надо писать "@SmartControl жду от вас готовый код для копипасты"@SmartControl, Все сдаюсь дальше не знаю
Нико, ну реально вы постоянно задаете элементарные вопросы и не воспринимаете подсказки вообще! А ждёте когда вам напишут готовый код.
Ajax-запрос элементарнейшая технология (ок, сама технология не так проста, но на jQuery это просто как раз, два, три). Откройте любую из миллиона статей в интернете изучите что да как и тупо делайте по инструкции! Если вы не хотите учиться тогда не стоит засорять здесь форум, а если хотите развиваться — так учитесь и развивайтесь!
Плохой движок, не используйте его. Делайте на "простом пхп" если знаете как!В простом пхп знаю как делать и у меня работает но вот на этом движке ни как не пойму как подключить =(
Неправильно, надо писать "@SmartControl жду от вас готовый код для копипасты"@SmartControl, Все сдаюсь дальше не знаю
Нико, ну реально вы постоянно задаете элементарные вопросы и не воспринимаете подсказки вообще! А ждёте когда вам напишут готовый код.
Ajax-запрос элементарнейшая технология (ок, сама технология не так проста, но на jQuery это просто как раз, два, три). Откройте любую из миллиона статей в интернете изучите что да как и тупо делайте по инструкции! Если вы не хотите учиться тогда не стоит засорять здесь форум, а если хотите развиваться — так учитесь и развивайтесь!
Я вам честно скажу, я многому научился делать самому из за вашей помощи если бы не вы я бы вообще не знал бы как это делается тем более у нас в стране нету школы этого типа редко где найдешь, из за это всем вам огромное спасибо честно. Но если по теме я правда не могу понять смысл без подсказок, вот я нашел в инете как это вывести но на чистом тупо пхп теперь мне нужно как то на движке сделать. Я не могу перевести код на инстант просто не пойму.
Да там не сильно отличается от чистого php, Пример небольшой для компонента sportЯ не могу перевести код на инстант просто не пойму.
1. добавляете action во frontend компонента — actionIncrement(){} — можно без параметров. Потому что юзера вы и в нем получите через $this->cms_user->id. И вызываете там метод модели, который меняет базу $this->model->incrementSport($this->cms_user->id);. Соответственно в модели прописываете этот метод
2. в jquery делаете запрос к URL /sport/increment
если через ajax отправляются какие-то данные, то их можно получить в action через
$param1 = $this->request->get('param1'); $param2 = $this->request->get('param2');
Да там не сильно отличается от чистого php, Пример небольшой для компонента sportЯ не могу перевести код на инстант просто не пойму.
1. добавляете action во frontend компонента — actionIncrement(){} — можно без параметров. Потому что юзера вы и в нем получите через $this->cms_user->id. И вызываете там метод модели, который меняет базу $this->model->incrementSport($this->cms_user->id);. Соответственно в модели прописываете этот метод
2. в jquery делаете запрос к URL /sport/increment
если через ajax отправляются какие-то данные, то их можно получить в action через
$param1 = $this->request->get('param1'); $param2 = $this->request->get('param2');
Вот так ?
class sports extends cmsFrontend { public function actionIncrement(){ $this->model->incrementSport($this->cms_user->id); $param1 = $this->request->get('param1'); $param2 = $this->request->get('param2'); } }
public function incrementSport($id){ return $this->update('sport_follow', $id); }
<?php $this->addJS('templates/default/js/sports.js'); ?> <div class="buttons15"> <div id="user_profile_rates" data-url="<?php echo $this->href_to('team_follow', 1); ?>"> <div class="karma block"> <a href="#vote-up" onclick="return icms.users.karmaUp()" class="thumb thumb_up button16"><?php echo LANG_SPORT_FOLLOW; ?></a> <?php foreach ($sport_follow_team as $follow){ ?> <span class="value <?php echo html_signed_class($follow['points']); ?>" title="<?php echo LANG_KARMA; ?>"> <?php echo html_signed_num($follow['points']); ?> </span> <?php } ?> </div> </div> </div>
var icms = icms || {}; icms.users = (function ($) { this.karmaUp = function(){ this.karmaVote('up'); return false; }; this.karmaVote = function(direction){ var block = $('#user_profile_rates'); var url = block.data('url'); var is_comment = block.data('is-comment'); var comment = ''; var value = $('.karma .value', block).html(); $('.karma .value', block).addClass('loading-icon').html(''); $('.karma .thumb', block).hide(); $.post(url, {direction: direction, comment: comment}, function(result){ if (result == null || typeof(result) == 'undefined' || result.error){ icms.users.error(result.message); $('.karma .thumb', block).show(); $('.karma .value', block).removeClass('loading-icon').html(value); return; } $('.karma .value', block). removeClass('loading-icon'). removeClass('zero'). removeClass('positive'). removeClass('negative'). addClass(result.css_class). html(result.value); $('.karma .thumb', block).remove(); }, 'json'); }; this.error = function(message){ if (message) { icms.modal.alert(message); } this.enableStatusInput(false); }; }; return this; }).call(icms.users || {},jQuery);