春咲さんのメモ。

自分メモ的な。主にPHPについて。github:mindlessdoll(冬眠してるけど)

jquery+Nicescroll+スクロールの位置

NiceScrollを使っています。

modalを使用し、div要素内をスクロールさせているのだが、divの中の情報量がイベントによって表示非表示が切り替わり、よーは高さが変わる。

その時、Nicescrollがちょっとおかしくて、スクロールバーが一番下にあるときで、高さが変わった時のスクロールバーの位置がおかしい。要素が増える前と同じ位置に存在する(絵がないと説明しづらいなぁ…)。えっと、要素が増えたのに、スクロールバーが一番下のまま。でも、画面的にはその下にも要素は存在する。

これをどうにかしたい。

$(document).on('change', '.modal_box_body .float_table .charge_applications', function(event){
		var position = $("#scroll_bottom").offset().top;
		$(".modal_box .modal_box_scroll").animate({
    		scrollTop : position
		}, {
    		queue : false
		});
	});

てした。#scroll_bottomはスクロールさせたい位置の一番下の要素にID振った

$("#scroll_bottom").offset().top;で、#scroll_bottomの座標を取ってあとはスクロールさせただけ。.modal_box .modal_box_scrollは前述のdiv要素class名

説明下手ですみません。NiceScroll…resizeだとスクロールバーが一番上に移動するだけなんだもん…な…

あと、niceScrollの横スクロールバーいらねーよって時の対処法

$('#ascrail2003-hr').remove();

 消してやったぜwwwwwwww

あ。でもこのID可変なのね。だからどっかの親の子の何番目とかして消すのが一番だと思う。

C#の{}にはまった。

9年ぶりにC#に触りました。

VisualStudioの使い方とか覚えているものですね。あと、コード見ると何となくなんの処理してるか理解できる。まさか自分がこんなに覚えているとわw

で、掲題の件。

ただ、{中括弧}で囲まれているブロックの意味が分からなかった。if文かなんかの省略形?とか思ったけど違うでしょ?どうも、スコープがなんとか。その中で有効な変数がなんとか。そのくらいしかわからなかったけどw十分かなと。これが結構は時間調査してしまってw9年前の実装では使ってなかったのでw

と、自分メモでした。

Twig:自動生成のFormにクラスとか当てたいよー!

お久しぶりです。やっとネタが上がってきました。

 

{{ form_widget(form.ruby) }}

これですね、これです。ここにスタイルつけるには。

{{ form_widget(form.ruby ,{'attr':{'placeholder':'例)マツモト ヨシヒト'}}) }}

ってまぁ、なんのこっちゃない簡単に行けますと。

なんか複数の属性を付けたいときはこんな感じでTwigの配列形式でどぞー

{{ form_widget(form.other_yobo ,{'attr':{'placeholder':'例)お問合せ内容やご希望連絡時間帯など', 'cols':"30" , 'rows':"10", 'class':"unchecked"}} ) }}

ネタはこれだけだ!

Symfony2 routing.ymlのパラメータ制御

ルーティングで、ここの値は動的にしたいけど決められた文字列以外は受け付けたくないって時の書き方

たとえば、都道府県取得したいよって時。

select:
  pattern:  /{pref}/
  defaults: { _controller: hogeBundle:Fuga:select }
  requirements:
    pref:  "hokkaido|aomori|iwate|miyagi|akita|yamagata|fukushima|tokyo|kanagawa|saitama|chiba|ibaraki|tochigi|gunma|niigata|toyama|ishikawa|fukui|yamanashi|nagano|aichi|gifu|shizuoka|mie|osaka|hyogo|kyoto|shiga|nara|wakayama|tottori|shimane|okayama|hiroshima|yamaguchi|tokushima|kagawa|ehime|kochi|fukuoka|saga|nagasaki|kumamoto|oita|miyazaki|kagoshima|okinawa"

以上。

Symfony2で作ったサービスをTwigで利用する

1.サービス(もどき)を作る

2.TwigExtensionを拡張する

3.Twigで使う

 といった感じで進めていきます。

1.サービスもどきを作る

 今回私が作ったのはSEO用の文字列を取得する関数。共通で使いたかったので、Lib配下にSeoBundleを作成。内容は割愛。

2.TwigExtensionを拡張する

 これはちゃんと書くよ!↓中身

namespace hoge\fugaBundle\Twig\Extensions;

use Symfony\Component\DependencyInjection\ContainerInterface;
use \Twig_Extension;
use \Twig_Function_Method;

/**
 * TemplatingExtension
 * Twigの拡張クラス
 *
 */
class TemplatingExtension extends Twig_Extension
{

    /**
     * コンストラクタ
     *
     * @param ContainerInterface $container
     */
    public function __construct(ContainerInterface $container)
    {
        $this->container = $container;
    }

    public function getFunctions()
    {
        return array(
            'service' => new Twig_Function_Method($this, 'getService'),
        );
    }

    /**
     * DIコンテナを取得する
     *
     * @param ContainerInterface $container
     */
    public function getContainer()
    {
        return $this->container;
    }

    /**
     * DIコンテナからサービスを取得する
     *
     *
     * @param string $name サービス名
     * @return mixed サービスインスタンス
     */
    public function getService($name)
    {
        return $this->container->get($name);
    }

    public function getName()
    {
        return 'twig_extension';
    }
}

Services.yml

parameters:
    xx.twig.class: hoge\fugaBundle\Twig\Extensions\TemplatingExtension

services:
    xx.twig.templating_extension:
        class: "%xx.twig.class%"
        tags:
          - { name: twig.extension }
        arguments:
            - @service_container

2はこんな感じで。

3.Twigで使う

{% set seo = service('Seo') %}
{% set headers = seo.getHeaders(param) %}
{{ headers.title }}
{{ headers.description }}

こんな感じです。

getServiceってFunctionをserviceというタグで呼び出せるように定義しました。その名の通りな機能です。

getHeadersはサービスの中にあるfuncitonです。

今回一番はまったのは…Extensionの綴りですかねぇ…ずっとExtentionって書いてて動かないと悩んでおりましたので…。

TwigでRequestパラメータ取得

http://localhost/app_dev.php/maker/tokyo/condition/

ってURLがあるとします。この中の「tokyo」部分がパラメータになります。

{{ dump(app.request.attributes.get('_route_params')) }}

ってすると

array(1) { 'pref' => string(5) "tokyo" }

って取れます。

{{ dump(app.request.attributes.get('_route_params')['pref']) }}

ってやると

string(5) "tokyo"

ってとれます。それだけ。