Pomoc ohledně checkboxlistu
- wicked
- Člen | 290
Kluci, prosím jak mám postupovat?
Blbý dotaz, ale jak funguje checkboxlist? Respektivě přístup k položkám?
Mějme formulář, který obsahuje checkboxlist:
public function createComponentPokus() {
$form = new Nette\Application\UI\Form();
$form->addText('tagline', 'Tagline:');
$form->addCheckboxList('active_sites', 'Vložené ikony', array(
'Facebook' => 'Facebook',
'Facebook Counter' => 'Facebook Counter',
'Myspace' => 'Myspace',
'Twitter' => 'Twitter',
'Twitter Counter' => 'Twitter Counter',
'LinkedIn' => 'LinkedIn',
'LinkedIn Counter' => 'LinkedIn Counter',
'Delicious' => 'Delicious',
'Digg' => 'Digg',
'Digg Counter' => 'Digg Counter',
'Reddit' => 'Reddit',
'StumbleUpon' => 'StumbleUpon',
'StumbleUpon Counter' => 'StumbleUpon Counter',
'vuible' => 'vuible',
'vuible Counter' => 'vuible Counter',
'Google Bookmarks' => 'Google Bookmarks',
'Google +' => 'Google +',
'HackerNews' => 'HackerNews',
'MSNReporter' => 'MSNReporter',
'BlinkList' => 'BlinkList',
'Sphinn' => 'Sphinn',
'Posterous' => 'Posterous',
'Tumblr' => 'Tumblr',
'email' => 'email',
'Google Reader' => 'Google Reader',
'Add to favorites' => 'Add to favorites',
'More' => 'More'));
$form->addSubmit('send', 'Přidat úlohu');
$form->onSuccess[] = $this->processingSociableOptions;
return $form;
}
A následně potřebuji uložit do DB to, když je box zaškrtnutý aby ulozilo jeho nazev ⇒ on
Snad je to nějak srozumitelné …
Kdyz provedu ve zpracovani fomulare v array foreach hodi to chybu .. jak se dostanu jenom k nazvum zaskrnutého inputu?
Ja uz fakt nejak nevim …
- Filip Klimeš
- Nette Blogger | 156
viz phpfashion
public function processingSociableOptions($form, $values)
{
foreach($values->active_sites as $key => $name) {
// insert do DB
}
}
- wicked
- Člen | 290
To mě taky napadlo, jenže nějak mě to zlobilo …
Tahle vypada processing
private function processingSociableOptions(ArrayHash $values) {
$originOptions = unserialize($this->service->getOption('sociable_options'));
$options = [
'pixel' => "",
'blogplay_tags' => 1,
'version' => '4.3.2',
'automatic_mode' => 'on',
'tagline' => $values->tagline,
'custom_image_directory' => '',
'use_stylesheet' => 'on',
'use_images' => 'on',
'use_alphamask' => 'on',
'new_window' => 'on',
'help_grow' => '',
'locations' => array(
'is_single' => 'on',
'is_page' => 'on'
),
'active_sites' => // zde prave potrebuji mit facebook => on, twitter => on atd
'icon_size' => '32',
'icon_option' => 'option1',
"active" => 1,
'linksoptions' => ''
];
return serialize($options);
Tahle maji delanou DB (je to update pro pluginy wordpressu)
No a ja nevim jak to tahle dostat … repsktive jsem vse zkousel a nic me neslo …
- David Matějka
- Moderator | 6445
@JanEndel taky me to prekvapilo, ale asi opravdu muze byt public, https://github.com/…Callback.php#…
- wicked
- Člen | 290
Tady přidávám funkci, která tam již je a funguje …
private function setupDisableComments(UI\Form $form) {
$form->addGroup('Plugin Disable Comments');
$form->addRadioList('mode', null, [
'remove_everywhere' => 'Everywhere',
'selected_types' => 'On certain post types',
])
->setDefaultValue('remove_everywhere')
->setAttribute('data-id', 'mode');
$form->addCheckboxList('disabled_types', null, [
'post' => 'Příspěvky',
'page' => 'Stránky',
'attachment' => 'Mediální soubory',
])
->setAttribute('data-disabled')
->setAttribute('data-values', 'mode');
$form->addCheckbox('permanent', 'Použít persistentní mód')
->setDefaultValue(true)
->setOption('description', 'Toto provede trvalé změny v databázi - komentáře zůstanou zavřené, i když později plugin zakážete!');
}
/**
* @param \Nette\Utils\ArrayHash $values
* @return string
*/
private function processingDisableComments(ArrayHash $values) {
$everywhere = $values->mode === 'remove_everywhere';
$options = [
'remove_everywhere' => $everywhere,
'disabled_post_types' => ($everywhere ? ['post', 'page', 'attachment'] : array_values($values->disabled_types)),
'permanent' => $values->permanent,
'db_version' => 5,
];
return serialize($options);
}
private function processingPlugins(ArrayHash $values) {
$options = [];
if ($values->sociable) {
$options[] = 'sociable/sociable.php';
}
if ($values->all_in_one_seo_pack) {
$options[] = 'all-in-one-seo-pack/all_in_one_seo_pack.php';
}
if ($values->disable_comments) {
$options[] = 'disable-comments/disable-comments.php';
}
if ($values->disable_feeds) {
$options[] = 'disable-feeds/disable-feeds.php';
}
if ($values->instant_breadcrumbs) {
$options[] = 'instant-breadcrumbs/instant-breadcrumbs.php';
}
if ($values->yet_another_related_posts_plugin) {
$options[] = 'yet-another-related-posts-plugin/yarpp.php';
}
return serialize($options);
}
Takže funguj private funkce … coz o to, me ta funkce take funguje … jen potrebuji jako vystup z toho checkbox listu mit
obsahTagline, a pro activate_sites Facebook => on, Twitter => on atd podle zaskrtnutych checkboxu