forecho 的独立博客

把生命浪费在美好的事物上

Yii框架中使用bootstrap

2012年12月04日

把下载下来的bootstrap解压之后的整个文件夹,拷贝到项目中的protected\extensions文件夹里面,并且命名为bootstrap。 修改config目录下的main.php配置文件,修改完成之后的代码如下:

'preload'=>array('log','bootstrap'),


'gii'=>array(
	'class'=>'system.gii.GiiModule',
	'password'=>'password',
	// If removed, Gii defaults to localhost only. Edit carefully to taste.
	'ipFilters'=>array('127.0.0.1','::1'),
	'generatorPaths'=>array(
		'bootstrap.gii', // since 0.9.1
	),
),


// application components
'components'=>array(
	'user'=>array(
		// enable cookie-based authentication
		'allowAutoLogin'=>true,
	),
	// uncomment the following to enable URLs in path-format
	
	'bootstrap'=>array(
		 'class'=>'ext.bootstrap.components.Bootstrap', // assuming you extracted bootstrap under extensions
	 ),

使用方法参考如下:http://www.cniska.net/yii-bootstrap/

Mac输入法神器-鼠须管?

2012年11月30日

是不是神器我不知道,只有等我用过一阵子之后才能知道。 本篇文章就是讲讲我安装的过程以及一些最基本的配置,还有就是体验一下刚装上的这个神器。 官方的下载地址在这~,但是有时候会很慢,我共享的一个地址,目前最新的版本0.9.11,你可以在这下载~ 下载完之后,尼玛找半天没找到,为此还重启了一回电脑还是没发现,后来是网上搜了一些资料,这才发现位置,你可以参考下图: 我只想说隐藏的好深,不注意看很难找到。 安装好之后简单的配置一下: 一. 配置简繁体输入 鼠须管默认是繁体输入,需要切换到简体输入的话,请用快捷键 control+“~”  打开切换菜单,选“漢字→汉字” 即可。 二、配置显示方式 复制default.yaml和squirrel.yaml,并重命名为default.custom.yaml和squirrel.custom.yaml。 1、default.custom.yaml可以改输入的候选词个数。代码如下:

patch:
  "menu/page_size": 8

2、squirrel.custom.yaml可以改输入法配色方案和字号、横向展示等功能,具体请参考这个网址。代码如下:

patch:
  us_keyboard_layout: true      # 鍵盤選項:應用美式鍵盤佈局
  style/horizontal: true        # 候選窗横向顯示
  style/font_face: "Hiragino Sans GB W3"    # 我喜歡的字體名稱
  style/font_point: 18          # 字號
  style/corner_radius: 5       # 窗口圓角半徑
  style/border_height: 8        # 窗口邊界高度,大於圓角半徑才有效果
  style/border_width: 8         # 窗口邊界寬度,大於圓角半徑才有效果
  style/color_scheme: luna      # 選擇配色方案

iOS开发实例(五)- 自动旋转

2012年11月28日

自动旋转屏幕有3种常用方法: 一、自动调整属性(适用比较简单的界面)。        1、创建一个项目Autosize,系统是默认支持Portrait(纵版)、Landscape Left(向左横向)、Landscape Right(向右横向),不支持Upside Down(倒过来),如下图:** ** ** 2、打开.xib文件,在IB中拖出6个Round Rect Button,按下图摆放和命名: 这个时候Run一下程序,然后在菜单处找到硬件->向左旋转。然后得到如下图结果: 你会发现只有UL位置是对的,其他的都有问题。 3、选中按钮,在属性处找到大小检查器,如下图: 方块里面箭头(→):实线表示可在调整窗口大小时自由更改对象的宽度,虚线表示将对象尽可能的保持原始值。 方块周围的“I”形:表示选定对象的边与包含它的视图的同侧边之间的距离。虚线表示距离是可以灵活可变的,实线表示间距的指应尽可能的保持不变。 4、根据上面的规则修改,如下图: 然后我们在Run一下程序,然后依次点击硬件->向左旋转,如果得到如下图结果,那就证明你成功了。   **二、看到视图旋转提示时,手动调整视图中的对象位置。 1、选中6个按钮,同时把他们的高度和宽度设置成125点,然后效果图如下: 2、这个时候我们Run一下程序,然后旋转就会得到如下面的效果: 好混乱,感觉不会再看了。这样的问题要怎么样去解决呢? 3、手动调整视图位置:按住control键分别把6个按钮拖到.h文件的@end前,依次分别命名为:buttonULbuttonURbuttonLbuttonRbuttonLLbuttonLR。生成的代码如下:

@property (weak, nonatomic) IBOutlet UIButton *buttonUL;
@property (weak, nonatomic) IBOutlet UIButton *buttonUR;
@property (weak, nonatomic) IBOutlet UIButton *buttonL;
@property (weak, nonatomic) IBOutlet UIButton *buttonR;
@property (weak, nonatomic) IBOutlet UIButton *buttonLL;
@property (weak, nonatomic) IBOutlet UIButton *buttonLR;

4、在旋转时移动代码:在.m文件@end前写一个旋转开始之后的方法,最后的旋转动画发生之前自动调用。代码如下:

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration{
    if(UIInterfaceOrientationIsPortrait(interfaceOrientation)){
        buttonUL.frame = CGRectMake(20, 20, 125, 125);
        buttonUR.frame = CGRectMake(175, 20, 125, 125);
        buttonL.frame = CGRectMake(20, 168, 125, 125);
        buttonR.frame = CGRectMake(175, 168, 125, 125);
        buttonLL.frame = CGRectMake(20, 315, 125, 125);
        buttonLR.frame = CGRectMake(175, 315, 125, 125);
    }else{
        buttonUL.frame = CGRectMake(20, 20, 125, 125);
        buttonUR.frame = CGRectMake(20, 155, 125, 125);
        buttonL.frame = CGRectMake(177, 20, 125, 125);
        buttonR.frame = CGRectMake(177, 155, 125, 125);
        buttonLL.frame = CGRectMake(328, 20, 125, 125);
        buttonLR.frame = CGRectMake(328, 155, 125, 125);
    }
}

所有的视图的大小位置都在frame属性中指定,CGRectMake函数支持通过指定的x和y的位置以及widthheight来轻松创建CGRect。然后我们Run一下程序,得到如下效果: 其实这样做的有点复杂的。   三、在IB中为视图设计两个不同的版本,一个适用于纵版,一个适用于横板。 1、需要我们新建一个Swap项目。我们需要在nib文件中添加两个视图。默认的就是第一个视图,然后我们可以按住 option 键复制另一份视图,然后在属性检查器中的 Simulated Metrics 找到Orientation 菜单把 Portrait 改为 Landscape ,如下图所示: 2、创建两个视图:打开辅助编辑器,按住 Control 把视图拖到.h文件中,创建一名为 portrait 的输出口,Storage 为 Strong,如下图: 为横向视图重复以上操作,创建一名为 landscape 的输出口。 3、在IB库中拖出Round Rect Buttons,分别放入每个视图中,然后是大小检查器中将Width和Height属性改为125,然后移动位置,并且将标签改为FooBar。结果如下图所示: 4、创建和关联按钮的输出口:按住control 把横向视图中的Foo按钮拖到.h文件中,将Connection 弹出菜单的值从Outlet 改为Outlet Collection,并且命名为foos。从纵向视图中的Foo 按钮拖至已存在的foos 输出口,与之关联。 对Bar 按钮进行以上重复动作,命名为bars

CI使用PHP-ExcelReader类

2012年11月27日

关于PHP怎么使用PHP-ExcelReader,请参考这篇文章~,这个demo,你可以在这下载~。修改一下数据库资料就能使用。 下面转入正题,CI如何使用PHP-ExcelReader? 先把下载好的PHP-ExcelReader文件中的oleread.phpreader.php文件拷贝出来(reader.php文件可能需要把第 261行 “=&”  改为 “=” )放在phpexcelreader文件夹(这个文件夹可以放在项目更目录下),然后我们最好写一个函数文件命名为:my_excel_helper.php,放在application/helpers文件夹里面,代码如下:

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

function excel()
{
	$CI = &get_instance();
	if(!isset($CI->excel))
	{
		require_once '/resources/phpexcelreader/reader.php';//此处是reader.php文件的相对路径,根据项目自行修改
		$CI->excel = new Spreadsheet_Excel_Reader();
		$CI->excel->setOutputEncoding('utf-8');
	}
	return $CI->excel;
}

ExcelController控制器代码如下:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Excel extends CI_Controller {

    function __construct() {
        parent::__construct();
		$this->load->library('session');
    }
	
	function excelList()
	{
		// 读取 excel 内容
		$this->load->helper('my_excel');
		$excel = excel();
		$excel->read('themes/default/demo.xls');
		$data['excel_datas'] = $excel->sheets[0]['cells'];
		//$data['excel_rows'] = $excel->sheets[0]['numRows'];//表的行数
		$data['excel_cols'] = $excel->sheets[0]['numCols'];//表的列数

		$data['title_for_layout'] = "Excel表格";
		// 加载视图输出
		$this->layout->view('admin/excelList', $data);
	}
	

}

View视图文件主要代码如下:

<h2>读取 excel 内容</h2>
<table cellpadding="0" cellspacing="0">
	<?php foreach($excel_datas as $row): ?>
    <tr>
		<?php for ($i = 1; $i <= $excel_cols; $i++):?>
    	<td width="80"><?php echo $row[$i]; ?></td>
		<?php endfor;?>
    </tr>
    <?php endforeach; ?>
</table>

然后就完成了,如果你能正确的浏览Excel内容,那么说明你成功了,注意本教程CI使用PHP-ExcelReader时没有涉及到数据库方面,需要自行扩充。

iOS开发实例(四)- 用户界面(下)

2012年11月20日

上上篇文章**我们讲了键盘的调用以及关闭,上篇文章我们讲了滑块控件,本篇文章主要讲开关、按钮和分段控件。** ** ** 一、添加分段控件:打开.xib文件在IB里找到Segmented Control分段控件,直接拖过来,然后调整大小,改First名为Switches,改Second名为Button,完成之后如下图:   二、添加开关控件: 1、在IB里直接找到Switch开关控件拖过来,然后按住键盘option键。拖动刚才的Switch,移动到另外一边生成另外一个开关。 2、链接开关的输出口和操作:按住control拖动左边的开关控件到.h文件的@end前,添加一个输出口,name输入leftSwitch,然后回车。然后右边的开关也是同样的操作,name名为rightSwitch,效果如下图: 3、关联两个开关:这个比较关键,关联之后,操作一个开关另一个开关也跟着动。先按住control键拖动左边的开关到.h文件的@end前,然后将Connection改为Action,将name输入switchChanged,然后回车。如下图: 比较关键的是下一步,你要按住control键拖动右边的开关控件,拖到已经创建的switchChanged上面。只有这样才能时两个开关关联起来,并且同时操作。如下图: 最后,按住control把分段控件拖到.h文件中,创建一个操作方法:将Connection改为Action,将name输入toggleControls。 4、实现功能还需要在.m的switchChanged操作方法添加代码,完成之后代码如下:

- (IBAction)switchChanged:(id)sender {
    UISwitch *whichSwitch = (UISwitch *)sender;
    BOOL setting = whichSwitch.isOn;//获得开关状态
    [leftSwitch setOn:setting animated:YES];//设置开关状态
    [rightSwitch setOn:setting animated:YES];//设置开关状态
}

这时候我们Run一下程序,当你操作一个开关时另一个开关也同时动,那就说明我们成功了。   三、添加按钮 1、在IB库里面找到Round Rect Button,直接拖到.xib文件的开关控件上面,并且调整大小,使之完全覆盖两个开关控件,并且添加名Do Something。 2、按住control键拖到按钮到.h文件的@end前,添加一个输出口,在name输入doSomethingButton,然后回车。再一次按住control键拖到按钮到.h文件的@end前,添加一个操作,将Connection改为Action,将name输入buttonPressed。如下图: 3、为了让程序启动时隐藏按钮,在按钮属性中找到View部分的Drawing,选中Hidden复选框。   四、实现分段控件的操作方法    在.m文件中找到toggleControls方法,添加操作,完成之后代码如下:

- (IBAction)toggleControls:(id)sender {
    //0 == switchs index 判断当前选择的分段控件是哪一部分
    if ([sender selectedSegmentIndex] == 0) {
        leftSwitch.hidden = NO;
        rightSwitch.hidden = NO;
        doSomethingButton.hidden = YES;
    }else{
        leftSwitch.hidden = YES;
        rightSwitch.hidden = YES;
        doSomethingButton.hidden = NO;
    }
}

这时候Run一下程序,如果能使用分段控件正确切换开关和按钮的话,那么你成功了。   五、实现操作表和警报(两者类似但是有区别,操作表需要用户做出选择,然后根据选择会得到不同的结果,而警报只是一个通知,可能只有一个按钮) 1、遵从操作表的委托方法:在.h文件中添加<UIActionSheetDelegate>,位置如下:

@interface BIDViewController : UIViewController <UIActionSheetDelegate>

2、显示操作表:在.m文件中找到buttonPressed方法。添加代码之后如下:

- (IBAction)buttonPressed:(id)sender {
    UIActionSheet *actionSheet = [[UIActionSheet alloc] //分配一个UIActionSheet对象并进行初始化
                                  initWithTitle:@"Are you sure?" //设置标题,将会显示在Action Sheet的顶部
                                  delegate:self //设置操作表的委托,该表被按下时收到通知。通过self传递。
                                  cancelButtonTitle:@"No Way" //设置取消按钮的标题,将会显示在Action Sheet的最下边
                                  destructiveButtonTitle:@"Yes,I'm Sure!" //设置第一个确定按钮的标题,“继续”按钮
                                  otherButtonTitles:nil];
                                  //otherButtonTitles: @"New Button 1", @"New Button 2", nil]; //可以设置任意多的确定按钮
    [actionSheet showInView:self.view]; //显示操作表
}

3、然后在下面添加这个方法,代码如下:

//actionSheet didDismissWithButtonIndex是UIActionSheetDelegate委托方法中的一个
- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex{
    if (buttonIndex != [actionSheet cancelButtonIndex]) {//buttonIndex表示用户所轻触的按钮的编号,编号从上往下从0开始。actionSheet cancelButtonIndex表示取消按钮的编号。
        NSString *msg = nil;

        if (nameField.text.length > 0) 
            msg = [[NSString alloc] initWithFormat:
                   @"You can breathe easy, %@, everything went OK.",
                   nameField.text];
        else
            msg = @"You can breathe easy, everything went OK.";

        UIAlertView *alert = [[UIAlertView alloc]
                              initWithTitle:@"Something was done" //设置标题,将会显示在Alert的顶部
                              message:msg //设置提示消息内容
                              delegate:self //设置警告视图self委托
                              cancelButtonTitle:@"Phew" //设置取消按钮的标题
                              otherButtonTitles:nil];
                              //otherButtonTitles: @"New Button 1", @"New Button 2", nil]; //可以设置任意多的确定按钮
            [alert show];
    }
}

这时候Run一下我们的程序,点击分段控件,切换到Button,点击Do Something 按钮,会出现一个操作表,然后选择yes的时候除弹出一个警报。   六、美化我们的按钮。

iOS开发实例(四)- 用户界面(中)

2012年11月20日

接着上一篇文章。这一篇文章主要讲滑块功能。 一、添加滑块和标签,达到下图效果:     ** 1、打开.xib文件直接在IB库里面拖过来SliderLabel控件,然后改动位置以及长度。 ** 2、改动Slider属性参数:Value的Maximum改为100(即最大值为100),Current改为50(即默认值为50),如下图: 3、改Label的Text为100,然后依次选择Editor->Size to Fit Content,这样滑块大小正好包容“100”的字符长度。 二、实现滑块功能: 1、按住control拖动Slider控件到.h文件,创建一个操作:将Connection改为Action,name输入sliderChanged,然后回车,如下图: 2、按住control拖动Lable控件到.h文件,创建一个输出口:在name处输入sliderLable,然后回车,如下图: 3、在.m文件找到空的sliderChanged方法,添加代码,变成如下代码:

- (IBAction)sliderChanged:(id)sender {
    UISlider *slider = (UISlider *)sender;//将sender赋给一个UISlider指针
    int progressAsInt = (int)roundf(slider.value);//获取滑块的当前值,四舍五入为整数。然后赋值给整型变量
    sliderLabel.text = [NSString stringWithFormat:@"%d",progressAsInt];//创建一个字符串,使其包含该数值,并把字符串赋给标签
}

现在我们Run一下,如果你滑动滑块,左边的数字也在变化,那就证明你成功了。

iOS开发实例(四)- 用户界面(上)

2012年11月18日

这次要完成的效果图如下: 一、创建一个名为Control Fun的项目,选择的依旧的Single View Application模板。 二、用Photoshop做一张宽度小于300px高度小于100px的图片,此处我们使用的是(172px*80px),下图文件: 然后把图片直接拖到我们的Xcode项目中。记得在提示框中选中Copy items into destination group's folder(if needed)复选框。PS:我习惯性的把图片文件拖到Supporting Files文件夹下面。   三、根据上一节学到的知识,我们在BIDViewController.xib中制作出下图的效果来: 1、在IB中找到image View库,然后拖到视图中,刚拖过来时会自动全屏显示,然后需要我们手动调试大小,大致调的差不多就好了,然后在右边属性框找到Image View中,下拉选择我们需要的图片文件。(此处系统会自动识别图片文件)。 2、调整图片大小:有个最简单的方法,依次选择Editor->Size to Fit Content,那么Xcode会自动调试成图片原尺寸大小。 3、调整图片的位置:最简单的方法依次选择Editor->Align->Horizontal Conter in Container,Xcode会自动帮我们把图片放在视图中间位置。 4、接下来就是该设置图片属性了,下面是我总结的一张表(其实是Text文本库的属性,但是后面的属性跟图片是一样的): 此处基本上所以属性我们都不用该,只需要取消Drawing 下面的Clip SubviewsAutoresize Subviews这两个选项即可,因为此处我们根本不需要这两项。 5、在IB里面直接拖过来各俩个Text和Lable库,然后按照上上图布局即可。(小窍门:同时选中Lable的两个标签然后依次选择Editor->Align->Right Edges可以使两个标签文字右对齐)。 6、选中Text标签,然后根据自己的需要来选择或修改属性。(可以查看上图注释)此处我们在Placeholder添加了Type in a name;Capitalization 选择Words;Drawing选中Opaque取消Clears Graphics Context和Clip Subviews;Number的Text基本上和Name的Text一样,除了Placeholder添加了Type in a number;Capitalization保持默认,Keyboard选择Number Pad。   四、创建链接和输出口: 根据上一节学习的,按住control按键拖动Text到.h文件中,Name的Text在Name字段中填写nameField,Number的Text在Name字段中填写numberField,如下图: 此时我们可以Run一下我们的程序,得到如下结果即为成功:   五、关闭键盘 1、完成输入之后关闭键盘:只需在.h文件@end前加入如下代码即可:

- (IBAction)textFieldDoneEditing:(id)sender;

在.m文件中@end前加入如下代码:

- (IBAction)textFieldDoneEditing:(id)sender {
    [sender resignFirstResponder];
}

选中Name的Text,找到右边属性的最后一个图标,找到Did End ON Exit 将旁边那个圈拖到File's Owner,如下图,然后选择textFieldDoneEditing操作。 2、通过触摸背景关闭键盘:在.h文件@end前添加如下代码:

- (IBAction)backgroundTop:(id)sender;

在.m文件中@endq前加入如下代码:

-(IBAction)backgroundTop:(id)sender{
    [nameField resignFirstResponder];
    [numberField resignFirstResponder];
}

现在我们需要把View在右边属性中找到class从UIView改成UIControl,只有这样背景才能有触发操作。然后找到右边属性的最后一个图标,找到Tounch Down 将旁边那个圈拖到File's Owner,选择backgroundTop操作。   接下来我们Run一下,如果程序没有出问题的话,就能实现点击背景关闭键盘功能。   -———-上部分完,下部分请点击这里。

写个工作四个多月的总结

2012年11月16日

既然是4个月的工作总结,那么我就从4个月之前开始讲起吧。

4个多月前,也就是7月3号之前我在网上投了几份简历,也跑了几家面试,决定暂时还是留着武汉找工作了。然后4号的时候我就在上班了,在一家离我住处很近的办公楼上班,只要走十分钟就能到。公司很小,如果我没记错的话老板是万网的华中地区代理,反正以前在万网干过,然后现在自己单独搞了个外包公司,专门接网站做,公司包括老板的老婆一起还有2个销售,外加上我,3号面试的时候老板说过有程序员但是不在本地,说是去出差了,不知道真假。4号一上班老板就给我个未完成的项目,让我改什么什么,那个公司是用ThinkPHP写项目的,由于以前没接触过,顿时倍感压力很大,一天下来我头都没敢抬,也不知道那两个销售女生长得怎么样?只知道她们不停的在打电话,然后重复着“这里是中国万网,请问你们需要做网站吗?”。其实老板人还不错,给我的感觉特别像我大学的一个老师。

但是中午的时候我接到另外一家公司的offer了,这事让我当时挺纠结的,这家公司给的工资还不错,但是要三个月的实习期,公司是做钢铁电子商务的一个平台网站,公司规模也还可以,比较正规,但是离我住处比较远,还好有一趟直达的公交,技术部苦逼的程序员就我一个外加一美工和一个技术主管。从个人长远发展和公司的氛围出发,4号的那晚上我最终还是做出了一个决定,决定去比较远的公司上班了,也就是我现在的这个公司,那边的公司老板我直接没给回复了,有点坑那个老板了,只能不好意思了。

这也是没办法的事,这个世界从来没有任何一件工作叫“钱多、事少、离家近”。

那么在这个公司上班也有4个多月了,除了每天早出晚归外加上班挤不上电梯外其他的都还算可以,还好每天上下班的那个公交车不是很挤,我差不多都是从始点站到终点站,可以坐着看看书看看视频什么的,还算可以,唯一有点坑爹的就是这个公交车很难等,很长时间才来一趟。

那么这个公司的情况是目前有一个网站,算是比较大型的,那么我的任务就是维护这个网站,还有就是改版、升级这个网站,然后就是修复bug,平常也有市场部接到的企业网站,我们也要帮忙做一下单子。公司网站是外包给别人做的,用的是PHP最好的框架之一Yii开发的。那么我去上班的时候跟他们的合同还有一个月,后期的维护什么的只能靠我们了。

Yii这个框架真心很不错,但是入门很不容易,到现在我都不敢说我会Yii了,公司的网站我只能改改代码,要在自己写的话可能还是有难度的。四个月以来公司没事的话,我就看看视频然后自己多写写Yii的demo,准备先做个企业站开始,说实话刚开始的时候很勤快,现在有点慢了。但是还在进行中,我的目标是离开这个公司前务必把Yii学会,公司网站本身就是个很好的学习机会。

到新的公司刚开始是非常忙的,由于之前也没有接触Yii,然后主管要改个东西我都不知道如何下手,所以刚开始拼命的去Google资料,看了一些入门的文章,看了几个视频,还好有学过CodeIgniter框架,有MVC的基础,所以学起来还算可以,在改版网站的时候遇到过很棘手的问题,但都被我解决了,其实有些问题并没有我们想象中的那么难,只要你去动手做。

有段时间我一直觉得自己工资好低,待遇不平等,眼热比我晚出来工作搞iOS开发的同学工资比我高,所有很果断的买了个MacBook准备也要学iOS开发的,索性那个时候有条件,能借到钱,弟弟又准备买笔记本,于是我想到这可能是时候了。然后就在9月9号的时候我买了15寸的MacBook Pro,然后我的SONY笔记本现在就在我弟那了。前一段时间还在网上话了大几十块钱买了本《iOS5基础教程》,还给自己定了个年底的计划,眼看时间就要到了,我学的好慢呀。(没办法,只能晚上回去之后才有时间用MacBook,然后照着书写写代码。)现在想想MacBook那个时候一直都是我最想买的笔记本,非常想用MacBook做开发,想过会买,但是真的不知道什么时候能买到,后来了解到其实MacBook也并没有想象中的距我那么的遥远。

一个多月前(也就是十一国庆节回来),我就顺利的转正了,前个星期(11月11号)的时候去参加知乎的第二次聚会,无意中看到一位知友的电子书(nook2)看到那个屏幕真的很棒,然后回来的时候鉴于自己长工资了,想给自己一个转正的礼物,然后就在11月12号的时候果断的买了个Kindle 4黑色版,果然还不错,推送功能很给力,一口气下载了好多书,又得抽时间看书。时间啊时间。 说实话,刚开始我是准备在这个公司做到过年的,然后明年准备去一线城市的,但是呢?最近我的这个想法有点动摇了,特别是昨天开会老板说的一些话。老板是个30出头的人,个子虽然不高,但是给我的感觉是个很不错老板,每次给我们开会我感觉我都能学到点什么,虽然我们私底下从未有过交流。老板说,

刚开始找工作3年内不要跟公司谈待遇的事,因为你没什么资本,等你有了资本再谈也不迟,也许你觉得这个公司给我待遇不好,那么我跳槽,那个公司老板不好,那么我跳槽,其实你刚刚出来工作挑来挑去工作基本上都是大同小异,遇到的老板也是大同小异,还不如踏踏实实的干好自己的工作。

那些成功的人无非都是情商很高外加一点运气,(所以要学会培养自己的情商),而那些智商很高的人一般都是在给他们打工。

我在这家公司还有很多要学习的,不只是技术。我想如果公司没有我要学的东西了,那么就是我离开这个公司的时候了。

Yii自定义下拉菜单

2012年11月06日

有时候我们需要自定义下来菜单,如果数据是从数据库的另外一张表读取的话,你可以参考我的这篇文章。 但是现在我们只是要简单的做个下拉菜单,数据并不需要从数据库读取,自己定义即可,那么怎么样修改呢?其实也很简单,找到相应view文件夹下面的_form.php文件,找到下面这行代码:

<?php echo $form->textField($model,'type'); ?>

修改成:

<?php echo $form->dropDownList( $model,'type', array('0' => '菜单分类', '1' => '单页面'));?>

这时候页面生成的是如下HTML:

<select name="Category[type]" id="Category_type">
    <option value="0">菜单分类</option>
    <option value="1">单页面</option>
</select>

Yii修改默认分页每页显示条数

2012年11月06日

yii自带默认分页是每页显示10条信息。 如果要修改每页显示条数,我们先找到这个页面的相应的Models文件,找到search这个方法,然后找到下面这块代码:

return new CActiveDataProvider($this, array(
    'criteria'=>$criteria,
));

改成:

return new CActiveDataProvider($this, array(
    'criteria'=>$criteria,
    'pagination'=>array(
        'pageSize'=>2, //代表每页显示2条信息
    ),
));